Android RelativeLayout使其子代相互覆盖

Android RelativeLayout使其子代相互覆盖,android,android-relativelayout,Android,Android Relativelayout,我有一个listview,每个项目都是一个relativelayout,它在一行中有几个textview,但是如果其中一个textview的文本太长,这将导致它后面的textview被覆盖,所以我想让它消失。但是我无法知道listview中每个项目的宽度,也无法知道relativelayout中的每个textview,我看到android api支持一个测量方法,但它太不有效了,因为如果我测量每个小部件,系统会在我之后做同样的事情。请提供一个好方法来解决我的问题,谢谢 @Muhannad A.A

我有一个listview,每个项目都是一个relativelayout,它在一行中有几个textview,但是如果其中一个textview的文本太长,这将导致它后面的textview被覆盖,所以我想让它消失。但是我无法知道listview中每个项目的宽度,也无法知道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);
    }
    }
}
}

为什么不使用RelativeLayout属性,如

toRightOf and toLeftOf

我想这个奇怪的文本视图的长度太长了,因为您没有使用省略号。在textview中使用省略号

android:ellipsize=end


这是正确的方法,没有任何布局可以解决您的问题。

但是长文本后面的文本视图将被挤出页面relativelayout@KrystalJake为什么不使用maxWidth和maxHeight?或者你可以使用重力线性布局而不是RelativeLayout我发现我必须覆盖RelativeLayout,然后我判断它的子项总宽度,如果总宽度大于RelativeLayout的宽度,我对它的一些缺点不屑一顾children@KrystalJake如果你发现你的解决方案有帮助,别忘了在这里分享,因为我们想知道如何解决这个问题:@ KrasaljaKEGO:我建议你为你的文本视图使用一个线性布局,并通过编辑一个更具体的问题来考虑TwitVIEW的最大宽度阈值:增加问题布局