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