Android LinearLayout包装内容的问题

时间:2011-05-30 10:23:08

标签: android android-linearlayout

我有一个listitem的以下linearlayout。

    <ImageView android:id="@+id/icon" 
                   android:src="@android:drawable/ic_input_add"  
                   android:layout_height="wrap_content"  
                   android:layout_width="22px"  
                   android:layout_marginTop="4px"  
                   android:layout_marginRight="4px"  
                   android:layout_marginLeft="1px" />

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

        <TextView android:layout_width="wrap_content"  
                      android:text="LongerTextView" 
                      android:id="@+id/textView1" 
                      android:layout_height="wrap_content"/>

        <TextView android:layout_width="wrap_content" 
                      android:text="TextView" 
                      android:id="@+id/textView2" 
                      android:layout_height="wrap_content"/>

    </LinearLayout>

    <LinearLayout android:id="@+id/linearLayout2" 
                      android:layout_height="match_parent"  
                      android:layout_width="fill_parent" 
                      android:gravity="right">

        <ImageView android:layout_marginTop="4px" 
                       android:src="@android:drawable/ic_input_add"    
                       android:layout_marginLeft="1px"  
                       android:layout_height="wrap_content"   
                       android:layout_marginRight="1px" 
                       android:id="@+id/icon2" 
                       android:layout_width="22px"/>
    </LinearLayout>

布局应该在左边和右边一直显示一个图像,两个文本项之间。这样工作正常,只要文本不会变得比屏幕宽。文本越长,我的右侧图标就会被推离屏幕。

文本应该换行到一个新行,左右图标都应该始终显示。

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

尝试使用Relative Layouts

在相对布局中,您可以使用layout_alignParentLeft =“true”指定一个图像(例如id:imgLeft),它将保留在左侧

然后另一个图像(imgRight)与layout_alignParentRight =“true”,将保持在右边

然后包含文本的线性布局: layout_toLeftOf =“@ id / imgRight”和layout_toRightOf =“imgLeft”

答案 1 :(得分:1)

我已根据您的要求重新设计了您的xml。使用以下代码。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff">
    <ImageView
        android:id="@+id/icon"
        android:src="@android:drawable/ic_input_add"
        android:layout_height="wrap_content"
        android:layout_width="22px"
        android:layout_marginTop="4px"
        android:layout_marginRight="4px"
        android:layout_marginLeft="1px"></ImageView>
        <LinearLayout
        android:id="@+id/linearLayout2"
        android:layout_height="match_parent"
        android:layout_width="wrap_content"
        android:gravity="right"
        android:layout_alignParentRight="true">
        <ImageView
            android:layout_marginTop="4px"
            android:src="@android:drawable/ic_input_add"
            android:layout_marginLeft="1px"
            android:layout_height="wrap_content"
            android:layout_marginRight="1px"
            android:id="@+id/icon2"
            android:layout_width="wrap_content"></ImageView>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linearLayout1"
        android:orientation="vertical"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/icon"
        android:layout_toLeftOf="@+id/linearLayout2">
        <TextView
            android:layout_width="wrap_content"
            android:text="LongerTextView"
            android:id="@+id/textView1"
            android:layout_height="wrap_content"></TextView>
        <TextView
            android:layout_width="wrap_content"
            android:text="TextView"
            android:id="@+id/textView2"
            android:layout_height="wrap_content"></TextView>
    </LinearLayout>


</RelativeLayout>

如果我的回复对您有帮助,不要忘记投票。

由于 迪帕克

答案 2 :(得分:0)

IIRC(未测试,但我可以在大约8小时内完成)你可能会丢失第三个LinearLayout(包装第二个ImageView的那个)。然后设置包含TextViews到中心的LinearLayout的android:gravity。