LinearLayout imageview + Text(左+右)不同的布局?

时间:2014-06-10 22:29:53

标签: android android-layout

LinearLayout int LinearLayout imageview + Icon(左+右)

我尝试向右对齐,但我遇到了很多问题。

当向左对齐时,一切正常,但是当我尝试右对齐时,图像位于左侧,因为它位于布局内,我不知道如何更改布局。 是聊天。

LayoutParams lp = (LayoutParams) holder.text.getLayoutParams ();
LayoutParams lp2 = (LayoutParams) holder.text2.getLayoutParams ();
LayoutParams lp3 = (LayoutParams) holder.image.getLayoutParams ();

左对齐(工作)

lp.gravity = Gravity.LEFT;
lp2.gravity = Gravity.LEFT;
lp3.gravity = Gravity.LEFT;

对齐RIGTH(不工作)

lp.gravity = Gravity.RIGHT;
lp2.gravity = Gravity.RIGHT;
lp3.gravity = Gravity.RIGHT;

不会从左侧位置移动:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"  >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:orientation="vertical" 
         android:id="@+id/chat_layout1">

        <ImageView
            android:id="@+id/image"
            android:layout_width="64dp"
            android:layout_height="64dp"
            android:src="@drawable/user" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" 
        android:id="@+id/chat_layout2">

        <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="30dp"
            android:layout_margin="5sp"
            android:background="@drawable/right_message_bg"
            android:text="Medium Text"
            android:textSize="20sp"/>

        <TextView
            android:id="@+id/text2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-" />
    </LinearLayout>

</LinearLayout>

如何从其他布局更改图像? chat_layout2?

____
|   |  text  (work)
|___| 
____
|   |                    text   (not work right)
|___|

2 个答案:

答案 0 :(得分:0)

  1. 将chat_layout2的xml宽度布局参数更改为wrap_content。

    您的图片布局仅可见,因为它首先列出。您的文本视图布局尽可能大。此外,图像环绕布局是多余的,因为ImageView仍然具有LinearLayoutParam参数。

  2. 并将(chat_layout1&amp; chat_layout2)的父级(parent_chat_layout)的重力设置为右 - 它会改变其子项的定位方式。并将其定位设置为水平。

  3. 使用开发者选项的活动&gt;显示布局边界:

    Activity with Developer Options>Show layout bounds turn on

    <LinearLayout ...>
    
    <LinearLayout android:id="@+id/parent_chat_layout"
        ...
        android:orientation="horizontal">
    
        <ImageView  
            android:id="@+id/image" ... />
    
        <LinearLayout
            android:id="@+id/chat_layout2"
            android:layout_width="match_parent" //IT SHOULD BE WRAP_CONTENT
            ...>
            <TextView
                android:id="@+id/text"
                .../>
            <TextView
                android:id="@+id/text2"
                ..."/>
        </LinearLayout>
    </LinearLayout>
    
    <LinearLayout android:id="@+id/parent_chat_layout2"
        ...
        android:gravity="right"> //THIS SHOULD BE CHANGED, NOT CHILDREN'S GRAVITY
    
            <ImageView
                android:id="@+id/image1".../>
    
        <LinearLayout
            android:id="@+id/chat_layout21"
            android:layout_width="wrap_content" //THIS IS WHERE MAGIC HAPPENS
            ...>
            <TextView
                android:id="@+id/text1"
               .../>
            <TextView
                android:id="@+id/text21"
                .../>
        </LinearLayout>
    </LinearLayout>
    </LinearLayout>
    

答案 1 :(得分:-1)

尝试使用RelativeLayout代替LinearLayout。 RelativeLayouts更容易使用......