18
我试图在LinearLayout
中嵌套RelativeLayout
,并给RelativeLayout
一个边距,使其边缘远离LinearLayout
的边缘。到目前为止,我有这样的:相对布局忽略setMargin()
LayoutInflater.from(context).inflate(R.layout.conversation_view_layout, this, true);
this.setLayoutParams(new MarginLayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
int tbm = AllConversationsActivity.topAndBottomMargin;
int lrm = AllConversationsActivity.leftAndRightMargin;
((MarginLayoutParams) this.getLayoutParams()).setMargins(lrm, tbm, lrm, tbm);
this.requestLayout();
其中,如果我正确地读API,应设置的RelativeLayout的指定数量的空白。它根本没有这样做,但似乎完全忽略了setMargins()
。
而且,这里是我的xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
android:id="@+id/conversation_picture"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"/>
<TextView
android:id="@+id/conversation_person"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@id/conversation_picture"
android:singleLine="true"
android:ellipsize="marquee"/>
<TextView
android:id="@+id/conversation_length"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"/>
<TextView
android:id="@+id/conversation_first_line"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@id/conversation_picture"
android:layout_alignParentLeft="true"
android:singleLine="true"
android:ellipsize="end"/>
<TextView
android:id="@+id/conversation_last_time"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_below="@id/conversation_first_line"
android:layout_alignParentLeft="true"
android:singleLine="true"
android:ellipsize="marquee"/>
我有一个小的怀疑,这些观点都迫使RelativeLayout
边缘父边缘时,他们让自己的定位电话。 有人知道必须做些什么来获得这些利润率?或者也许有更好的方法来完成这一点? 赞赏。
如果这是他的问题,他会得到一个类抛出异常。 MarginLayoutParams是LinearLayout.LayoutParams,RelativeLayout.LayoutParams等的超类。除了setLayoutParams()实际做的是将参数保存在成员字段中,并调用requestLayout(),所以这些调用中只有一个应该是hapenning(requestLayout()或setLayoutParams(),但不是两者一起) – asenovm
10 Entreco,完全正确,那是因为我创建了params的错误所有者,但是你实施的实现有点不对。下面是结束了工作代码: 'LinearLayout.LayoutParams PARAMS =新LinearLayout.LayoutParams( \t \t \t \t LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); \t \t int tbm = AllConversationsActivity.topAndBottomMargin; \t \t int lrm = AllConversationsActivity.leftAndRightMargin; \t \t params.setMargins(tbm,lrm,tbm,lrm); \t \t setLayoutParams(params); \t \t requestLayout();' 感谢您的帮助! – blaineh
这不适合我。我在我的扩展的LinearLayout的构造函数中尝试了这个。无论我提供什么尺寸,边缘都不会显示出来。什么可能是错的? – faizal