我认为这个问题的答案可能很简单,但我正在努力......
我有一个包含多列的TableLayout。我希望最后一列具有固定宽度,但我想定义该宽度,以便能够从我的程序中保存尽可能宽的字符串。即它总是宽到足以包含“这条绳子”而没有包裹或浪费任何空间。
我想这样做,因为我在ListView中有这些TableLayout,所以当最后一列的宽度可变时它看起来很差。
我已经尝试获取字符串宽度,甚至可以将其放入TextView,在所有相应的TextView上调用getTextSize()然后调用setWidth()。我遇到的问题是gettextSize()返回像素,但setWidth使用ScaledPixels。
我确信有一个非常简单的解决方案。有人可以帮忙吗?
答案 0 :(得分:4)
您是否在XML布局中使用android:width =“wrap_content”来定义最后一列的宽度?
编辑:我想我只是理解,你有一个列表视图,它包含一个表,你希望列表视图的所有行对于表的最后一行具有相同的长度。正确?
我现在只能想到一个非常不优雅的解决方案,它涉及在构建列表视图之前遍历所有字符串。
一般逻辑如下:
我要假设你从数组中获取字符串,我们称之为数据。
建立一个全局浮点变量来表示你拥有的最长字符串,我们称之为maxLength。
在布局中创建一个看不见的textview(让我们称之为invisibleText),你可以通过设置
来做到这一点android:visibility="gone"
然后:
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 text = (TextView)findViewById(R.id.the_text_view_you_want);
text.setText(data[position]);
text.setWidth(maxLength)
表列应该使用android:width =“wrap_content” 我没有测试这段代码,但它应该可以工作,我之前做过类似的事情。