android:layout_weight属性根据文本长度而变化

时间:2014-01-20 12:59:33

标签: android android-layout listview android-listview

我正在开发Android项目,我必须在其中显示动态列表。每个列表项包含3个文本视图。

我的问题是,列表没有以正确的格式显示。权重属性正在动态变化。

请看屏幕截图。

更改%值(0.14,0.01,-1.2)不是垂直直线,它们是锯齿形。

我希望所有公司值,更改%值和LTP值应该是垂直相同的顺序。

我的代码:适配器的布局

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/custLayout"
        android:layout_height="50dp"
        android:layout_width="fill_parent">
         <TextView
            android:id="@+id/symbol_list"
            android:layout_width="70dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="Symbol"
            android:layout_weight="1"
            android:textColor="#FFFFFF"
            android:textSize="13dp" />

         <TextView
             android:id="@+id/persent"
             android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:gravity="center"
            android:text="Chang"
            android:layout_weight="0.5"
            android:textColor="#FFFFFF"
            android:textSize="13dp" />

         <TextView 
             android:id="@+id/ltp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_gravity="center_vertical"
            android:gravity="center|right"
            android:layout_marginRight="15dp"
            android:text="ltp"
            android:layout_weight="0.5"
            android:textColor="#FFFFFF"
            android:textSize="13dp" />


    </LinearLayout>

</LinearLayout>

请帮忙。

enter image description here

2 个答案:

答案 0 :(得分:8)

wrap_content宽度替换为0px

布局权重按重量比例分配任何剩余空间。 wrap_content大小调整首先进行,然后才分配剩余空间。

答案 1 :(得分:3)

改变它:

<?xml version="1.0" encoding="utf-8"?>
<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:id="@+id/custLayout"
    android:layout_height="50dp"
    android:layout_width="fill_parent">
     <TextView
        android:id="@+id/symbol_list"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="Symbol"
        android:layout_weight="1"
        android:textColor="#FFFFFF"
        android:textSize="13dp" />

     <TextView
         android:id="@+id/persent"
         android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:gravity="center"
        android:text="Chang"
        android:layout_weight="0.5"
        android:textColor="#FFFFFF"
        android:textSize="13dp" />

     <TextView 
         android:id="@+id/ltp"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_gravity="center_vertical"
        android:gravity="center|right"
        android:layout_marginRight="15dp"
        android:text="ltp"
        android:layout_weight="0.5"
        android:textColor="#FFFFFF"
        android:textSize="13dp" />


 </LinearLayout>

</LinearLayout>

必须记住,无论何时使用重量,都必须使用0px。如果使用垂直布局,则必须使用0px作为其高度,如果使用水平线性布局,则必须使用0px作为其宽度。