如何阻止LinearLayout宽度?

时间:2014-05-13 18:40:19

标签: android android-linearlayout

我尝试使用下一个外观获取自定义ListView: enter image description here

XML文件是下一个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:paddingRight="15dp"
    android:paddingLeft="15dp"
    android:orientation="horizontal" >

    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="4">
    <TextView 
        android:id="@+id/tveva"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="Nombre"
        />
    </LinearLayout>

    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:layout_weight="2">
    <TextView 
        android:id="@+id/tvpor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="Porcentaje"
        />
    </LinearLayout>

    <LinearLayout 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:layout_weight="2">
    <TextView 
        android:id="@+id/tvnot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="Nota"
        />
    </LinearLayout>

</LinearLayout>

当我运行应用程序并且 tvnot (TextView,你可以看到&#34; Nota&#34;)是4.5,例如,或6.7(它们是带小数的标记)时出现问题ListView是完美对齐的并且具有良好的外观,但如果标记类似于5.75(两位小数),则左侧的LinearLayout(其中包括TextView with&#34; Porcentaje&#34;)向左移动一点ListView失去了它的线性度:

enter image description here

我将layout_weight属性设置为三个TextView的每个LinearLayout。我在Android上并不那么擅长,我认为只要设置这个属性就可以修复,但显然我错了。

希望你能帮助我!

4 个答案:

答案 0 :(得分:4)

您无需将所有元素包装在另一个LinearLayout中。这在Android中实际上是件可怕的事情。我建议你这样做:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="5dp">


    <TextView
        android:id="@+id/tveva"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="Nombre"
        android:textSize="20sp" 
        android:layout_weight=".4"/>


    <TextView
        android:id="@+id/tvpor"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="Porcentaje"
        android:textSize="20sp" 
        android:layout_weight=".3"/>


    <TextView
        android:id="@+id/tvnot"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="left"
        android:text="Nota"
        android:textSize="20sp" 
        android:layout_weight=".3"/>
</LinearLayout>

问候!

答案 1 :(得分:3)

使用布局权重时,必须将宽度(或高度)设置为0dp,否则视图可能无法正确缩放。例如:

<LinearLayout 
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="4">

答案 2 :(得分:0)

试试这个。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:paddingTop="5dp"
android:weightSum="8" >

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="4" >

    <TextView
        android:id="@+id/tveva"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Nombre"
        android:textSize="20sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:gravity="right" >

    <TextView
        android:id="@+id/tvpor"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Porcentaje"
        android:textSize="20sp" />
</LinearLayout>

<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="2"
    android:gravity="right" >

    <TextView
        android:id="@+id/tvnot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Nota"
        android:textSize="20sp" />
</LinearLayout>

答案 3 :(得分:-1)

通常在我们使用layout_weight时,我们使用宽度或高度为0dp,根据情况,在您的方案中 你正在使用layout_width:wrap_content 使用layout_width:0dp