我有一個RelativeLayout的內部的LinearLayout,我想將其調整到左邊或右邊取決於一個值(它是一個簡單的聊天,左邊是自己,右邊是我是誰說話)的人,這就是佈局代碼:對準左/右一個的RelativeLayout內的LinearLayout編程
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/layout_chat_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="@dimen/chat_margin_default"
android:paddingRight="@dimen/chat_margin_default"
android:layout_alignParentRight="true"
android:background="@drawable/textview_rounded_corners_receiver"
android:orientation="vertical">
<TextView
android:id="@+id/textview_chat_message_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textIsSelectable="true"
android:autoLink="all"
android:text="Se"/>
<TextView
android:id="@+id/textview_chat_message_date_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textIsSelectable="false"
android:textAlignment="textEnd"
android:text="10:32"
android:maxLines="1"
android:textSize="@dimen/chat_message_text_font_size"/>
</LinearLayout>
</RelativeLayout>
正如你可以看到android:layout_alignParentRight="true"
屬性設置。
的問題是,當我試圖讓訪問的LayoutParams將它們設置爲左邊或右邊,編程,它拋出一個鑄造例外:
java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams
這是我訪問的LayoutParams:
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) holder.mChatMessageContainer.getLayoutParams();
params.removeRule(RelativeLayout.ALIGN_PARENT_LEFT);
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
其中mChatMessageContainer是:
mChatMessageContainer = (View) v.findViewById(R.id.layout_chat_message);
最近有沒有ny linearLayout裏面的相對一個和代碼工作正常(我用一個TextView而不是LinearLayout),但我現在確實需要一個。
讀取DOC,我認爲我在訪問父佈局PARAMS,這就是爲什麼我把它轉換爲相對的,因爲如果我改變線性我也有同樣的異常。
如何設置對齊到的LinearLayout編程?
但'LinearLayout.LayoutParams'does沒有一個addRule添加'RelativeLayout.ALIGN_PARENT_RIGHT'property我所需要的。當然,我不能添加相對佈局的屬性。 –
然後改變你的父視圖的RelativeLayout – sasikumar
父視圖已經是一個RelativeLayout的。 –