【发布时间】:2011-12-31 19:20:39
【问题描述】:
我正在尝试将RelativeLayout 嵌套在LinearLayout 内,并为RelativeLayout 提供一个边距,使其边缘远离LinearLayout 的边缘。到目前为止,我有这个:
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 边缘到父边缘。
有人知道要设置这些边距必须做些什么吗?或者也许有更好的方法来完全做到这一点?
赞赏。
【问题讨论】:
标签: android android-layout android-widget