在运行时将ImageView对齐LinearLayout的左侧或右侧

时间:2014-04-24 10:08:59

标签: android android-layout android-imageview

我有一个LinearLayoutImageView,当用户收到一条消息时,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>

感谢。

1 个答案:

答案 0 :(得分:0)

首先将xml文件中的根布局(您的LinearLayoutImageView的父级)更改为RelativeLayout

初始化两个视图:

LinearLayout linear=(LinearLayout)findViewById(R.id.contentWithBackground);
ImageView image=(ImageView)findViewById(R.id.imageViewDelivered);

初始化LayoutParamLinearLayout的{​​{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