我想在以下垂直方向的LinearLayout
中,将带有tv_long_text的TextView
的布局_权重设置为80%。
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_short_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
tools:text="short text" />
<TextView
android:id="@+id/tv_long_text"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="0.8"
tools:text="a pretty long text" />
</LinearLayout>
上述操作无效,因为文本视图的父视图的方向是垂直的。
因此,我尝试在xml中设置android:layout_width="match_parent"
,然后通过获得测量的宽度在运行时设置宽度,然后将宽度设置为80%,但getMeasuredWidth
给我的结果是0。
int measuredWidth = longTextView.getMeasuredWidth();
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) longTextView.getLayoutParams();
params.width = (int) (measuredWidth * 0.8);
longTextView.setLayoutParams(params);
我还尝试在运行时设置layout_weight,但也不起作用,可能是因为它的父视图是垂直方向的。
longTextView.setLayoutParams(
new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.MATCH_PARENT,
0.8f)
);
对我有效的方法是为长文本视图添加一些额外的视图。但它只是为了尝试以百分比设置此视图的宽度而添加了2个额外的视图。是否有其他有效的方法来做到这一点?
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_short_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
tools:text="short text" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_long_text"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="0.8"
android:textStyle="bold"
tools:text="a pretty long text" />
<View
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="0.2"/>
</LinearLayout>
</LinearLayout>
4条答案
按热度按时间z0qdvdin1#
我不会尝试摆弄运行时测量。您的解决方案与第二个水平布局是完美的,因为您有两个文本视图水平扩展。
另一个选项是
com.android.support:percent:25.1.0
支持库中的PercentRelativeLayout请参阅此处这是文件上的
qc6wkl3g2#
使用android:布局权重
试试这个结构,让TextView流只有75%的屏幕宽度。你可以调整空格宽度来实现,你想要的像2为50%。
jxct1oxe3#
您可以使用
android:weightSum
,无需额外的View
即可获得相同的结果,例如:mklgxw1f4#
使用约束布局的解决方案: