我有一个LinearLayout
和ImageView
,当用户收到一条消息时,ImageView
应位于右侧,LinearLayout
位于其左侧,当发送消息时,ImageView
应位于左侧,LinearLayout
位于其右侧。
我怎么能在运行时这样做?
这是我的xml
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageViewDelivered"
android:layout_width="15sp"
android:layout_height="15sp"
android:src="@drawable/success"
android:layout_gravity="bottom"
android:layout_marginRight="4sp"
android:layout_marginLeft="4sp"
android:layout_marginBottom="2sp"
android:contentDescription="@string/emptytext" />
<LinearLayout
android:id="@+id/contentWithBackground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:background="@drawable/incoming_message_bg"
android:paddingLeft="10dp"
android:paddingBottom="10dp"
android:orientation="vertical">
<TextView
android:id="@+id/txtMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:textColor="@android:color/black"
android:layout_marginRight="5sp"
android:layout_marginLeft="5sp"
android:maxWidth="250dp" />
</LinearLayout>
</LinearLayout>
感谢。
答案 0 :(得分:0)
首先将xml文件中的根布局(您的LinearLayout
和ImageView
的父级)更改为RelativeLayout
。
初始化两个视图:
LinearLayout linear=(LinearLayout)findViewById(R.id.contentWithBackground);
ImageView image=(ImageView)findViewById(R.id.imageViewDelivered);
初始化LayoutParam
和LinearLayout
的{{1}}:
ImageView
将RelativeLayout.LayoutParams linearLp=(RelativeLayout.LayoutParams)linear.getLayoutParams();
RelativeLayout.LayoutParams imageLp=(RelativeLayout.LayoutParams)image.getLayoutParams();
设置为LinearLayout
左侧:
ImageView
将linearLp.addRule(RelativeLayout.LEFT_OF,image.getId());
设置为LinearLayout
的右侧:
ImageView