2010-10-18 31 views
1

修复TextView的宽度我认为这个问题的答案可能是很简单,但我挣扎....Android的 - 通过串

我有一个TableLayout多列。我希望最后一列的宽度是固定的,但我想定义该宽度以便能够从我的程序中保留尽可能多的字符串。即它总是足够宽以容纳“这根弦”而没有包装或浪费任何空间。

我想这样做,因为我有一个ListView内的这些TableLayouts,所以它看起来非常差,当最后一列是可变宽度。

我已经尝试获取字符串宽度,甚至要把它放到TextView中,在所有适当的TextView上调用getTextSize()然后setWidth()。我碰到的问题是gettextSize()返回像素,但setWidth使用ScaledPixels。

我确定有一个非常简单的解决方案。谁能帮忙?

回答

4

您是否在您的XML布局中使用android:width =“wrap_content”来定义最后一列的宽度?

编辑:我想我只是理解,你有一个列表视图,它拥有一个表,并且你希望列表视图的所有行对于表的最后一行具有相同的长度。对?

我现在只能想到一个非常不合适的解决方案,它涉及在构建列表视图之前检查所有字符串。

一般的逻辑将如下所示:

我要去假设你正在从一个数组中获得人串,让调用它的数据。

建立一个全局浮点型变量来表示您拥有的最长字符串,我们称它为maxLength。在你列表视图构造

int size = data.length; 
maxLength = 0.0f; 
for(int i = 0;i<size;i++){ 
    invisibleText.setText(data[i]); 
    float thisLength = invisibleText.getTextSize(); 
    if(thisLength>maxLength) maxLength = thisLength; 
} 

创建一个TextView(可以称之为invisibleText)在你的布局,不会是可见的,你可以通过设置

android:visibility="gone" 

那么做到这一点

TextView text = (TextView)findViewById(R.id.the_text_view_you_want); 
text.setText(data[position]); 
text.setWidth(maxLength) 

表列应该使用android:width =“wrap_content” 我没有测试这个代码,但它应该工作,我以前做过类似的东西。

+0

是的我最后一列使用android:width =“wrap_content”,是的,我希望表的最后一行在listView中的所有条目中具有相同的长度,并且希望该宽度仅为大到足以容纳应用中定义的最大长度字符串。 – user479811 2010-10-20 19:49:31

+0

在答案中添加了一些内容。试试看。 – blindstuff 2010-10-20 20:25:50