在我们的项目中,我们有这样一个案例:我们有两个文字视图(让我们说@id/text_view_1
和@id/text_view_2
)。我们应该将它们水平放置(@id/text_view_1
然后@id/text_view_2
),如果它们的宽度小于其父级的宽度或垂直(text_view_2
高于text_view_1
),如果它们也是宽。
现在,我提出的最佳解决方案看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text_view_above_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true" />
<TextView
android:id="@+id/text_view_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/text_view_2_right"
android:layout_alignBottom="@+id/text_view_2_right"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/text_view_right_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/text_view_2_above"
android:layout_toEndOf="@+id/text_view_1" />
</RelativeLayout>
以下是切换text_view
s
private void toggleVisibility() {
TextView textView1 = (TextView) findViewById(R.id.text_view_1);
TextView textViewAbove2 = (TextView) findViewById(R.id.text_view_above_2);
TextView textViewRight2 = (TextView) findViewById(R.id.text_view_right_2);
textView1.measure(0, 0);
textViewAbove2.measure(0, 0);
textViewRight2.measure(0, 0);
View parent = findViewById(R.id.parent);
parent.measure(0, 0);
if (textView1.getMeasuredWidth() + textViewRight2.getMeasuredWidth() < parent.getMeasuredWidth()) {
textViewAbove2.setVisibility(View.GONE);
textViewRight2.setVisibility(View.VISIBLE);
} else {
textViewRight2.setVisibility(View.GONE);
textViewAbove2.setVisibility(View.VISIBLE);
}
}
是否有更多的解决方案&#34;美丽&#34;比我描述的更短?我想有办法用ConstraintLayout
代替RelativeLayout
,但我不确定。
编辑1:可能我必须提供我想看到的结果。如果both views are short:
,这是一个活动应该是什么样子 ,这就是它的样子答案 0 :(得分:0)
解决方案:如果你想根据宽度要求设置TextView
,那么你只需使用LinearLayout
作为宽度为wrap_content的父级,并且对于两个子TextViews也给出宽度'wrap_content'
答案 1 :(得分:0)
尝试使用wrap_content并将这些子文本视图放在父LinearLayout中,将wrap_content作为两个子文本视图的宽度。它将根据这些文本视图中的内容进行放置。
如果您想要水平放置视图 -
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal">
<TextView
android:id="@+id/text_view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/text_view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
如果您想垂直放置视图 -
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/text_view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/text_view2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
答案 2 :(得分:-1)
尝试使用percentagelayout。这可能有所帮助。有关详细信息,请提供所需的输出。