2012-08-24 60 views
1

我需要在ListView中显示名称:值对列表。我想将值与最长名称宽度对齐。但是在收到数据之前,名称的长度和数量是未知的。如何将名称:值对对齐为ListView项目

例如:

name1:   value1 
name111:  value2 
someOtherName: value3 
----------------------next ListView Item 
name3:   value4 
longestNameeee: value5 
----------------------next ListView Item 

现在我已经创建适配器使用的LinearLayout作为项的布局和我添加与名称内LinearLayouts - 值对与weigth 0.5 - 0.5(装置值示出的中间后布局)。 但是如何根据最长名称长度来设置名称 - 值权重?

+0

如何使用双列gridview,其中一列的所有行的宽度相同。下面是关于如何控制GridView中列宽的建议:http://stackoverflow.com/questions/985153/how-to-make-a-gridview-stretchable-in-android-to-expand-the-column-width -去任何 –

回答

1

也许你可以考虑在你的列表视图行布局中使用相对布局,并将名称与左边的值和右边的值对齐?

另一种选择可能是可以使用Paint.measureText测量文本的长度 - 但需要设置油漆性质相同TextView的显示属性(TEXTSIZE,texyStyle,字体等) http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String,INT, int)

你应该能够得到一个体面的文本长度测量 - 它给你一个像素的六分之一,你可以使用它来设置列表行中所有名称textViews的布局参数。

0

您是否需要在最长名称后面开始的值?或者只是为了能够显示最长的名字?那么我会建议(并在类似的问题中)没有使用LinearLayout,而是使用RelativeLayout。

在那里你会定义两个TextViews,其中一个会在右边有重力。从我的代码中可以看出,正确的字段总是相同的大小,对吗?所以,根据这个调整它,让剩下的空间可以被填满。 我的一个例子布局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/list_selector" 
    android:orientation="horizontal" 
    android:padding="3dip" > 

<!-- Name--> 
<TextView 
    android:id="@+id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:textColor="#040404" 
    android:typeface="sans" 
    android:textSize="20dip" 
    android:text="Name" 
    android:textStyle="bold"/> 

<!-- Amount --> 
<TextView 
    android:id="@+id/amount" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:gravity="right" 
    android:layout_marginRight="5dip" 
    android:text="money" 
    android:textSize="20dip" 
    android:textColor="#FF8B1500" 
    android:textStyle="bold" 
    /> 
</RelativeLayout> 

,因为它需要和左留给姓名权的TextView填充尽可能多的空间。

希望我帮忙给个主意!