我有一个listview,每个项目都是一个relativelayout,它在一行中有几个textview,但是如果其中一个textview的文本太长,这将导致它后面的textview被覆盖,所以我想要它但是我无法在列表视图中知道每个项目的宽度,并且无法了解relativelayout中的每个textview,我看到android api支持一种度量方法,但是它非常低效,因为如果我测量每个小部件,系统将在我之后执行相同的操作。请提供一个好方法来解决我的问题,谢谢。
@Muhannad A.Alhariri这是我的解决方案:
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
int sumChildWidth = 0;
for (int i = 0; i < getChildCount(); i++) {
View child = getChildAt(i);
if (child != null) {
if (child.getVisibility() != View.GONE
&& child.getVisibility() != View.INVISIBLE) {
sumChildWidth += child.getWidth();
}
}
}
int myWidth = Math.round(getWidth()
- getContext().getResources().getDisplayMetrics().density * 15);
if (sumChildWidth > myWidth) {
if (getChildCount() > 0 && getChildCount() - 1 >= 0) {
View lastChild = getChildAt(getChildCount() - 1);
if (lastChild != null) {
lastChild.layout(0, 0, 0, 0);
}
}
}
}
答案 0 :(得分:0)
为什么不使用像
这样的RelativeLayout属性toRightOf and toLeftOf
答案 1 :(得分:0)
我认为奇怪的文本视图的长度太长,因为你没有使用省略号。在textview中使用省略号
机器人:ellipsize = “结束”
这是正确的方法,没有布局可以解决您的问题。