所以我的xml文件中的RelativeLayout中有两个TextView。当它们被本地化为不同的语言时,两个视图可能会相互重叠。
在这种情况下,我想将它们分成两行而不是一行。如何在java代码中检测重叠并重置它们的位置是另一个?
答案 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
(阿拉伯语的例子)