如何在Android中检测文本视图的重叠和重置位置?

时间:2015-07-23 18:46:47

标签: android android-layout android-fragments android-intent android-activity

所以我的xml文件中的RelativeLayout中有两个TextView。当它们被本地化为不同的语言时,两个视图可能会相互重叠。

在这种情况下,我想将它们分成两行而不是一行。如何在java代码中检测重叠并重置它们的位置是另一个?

2 个答案:

答案 0 :(得分:1)

我使用LinearLayout做了这个,并且通过使用textview的自动换行功能,我能够检测textview是否包裹。通过使用ViewTreeObserver并查看textview的行数,然后以编程方式将视图设置为Gone。

final TextView text = findViewById(R.id.textview1);
text.getViewTreeObserver().addOnGlobalLayoutListener(
             new ViewTreeObserver.OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
         int lineCount = text.getLineCount();
         Log.d(this, "LineCount = " + lineCount);
         if (lineCount > 1) {
             text.setVisibility(View.GONE);
         }
         getViewTreeObserver().removeGlobalOnLayoutListener(this);
     }
 });

只需要确保你的布局没有椭圆化,或者你将singleLine或Maxlines设置为true或1.我在我希望变为2的一个textview上设置Max line,这样如果它不会包装配合。

答案 1 :(得分:0)

只需将您的布局放在语言布局文件夹中即可。

res/layout

中的标准版面

另一个res/layout-ar(阿拉伯语的例子)