我想在一行中绘制两个Button
s 等宽。比如,他们有标题:“示例文本”和“额外文本”。它们应尽可能占用较低的空间,但所有的单词都应该写出来。
我写了这段代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:maxLines="1"
android:text="Sample text"
android:textAllCaps="false" />
<Button
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:maxLines="1"
android:text="Extra text"
android:textAllCaps="false" />
</LinearLayout>
如果我删除android:maxLines="1"
并将wrap_content
设置为宽度,则Button
会写入文字,但请填写不同的宽度。
答案 0 :(得分:0)
如果您想在一行找到两个按钮,则需要将match_parent
设置为layout_width
的{{1}}
LinearLayout
答案 1 :(得分:0)
为两个按钮添加布局权重。因此,它将确保您具有相同的尺寸。
android:layout_weight="1"
同时获取屏幕尺寸并以编程方式设置尺寸。
修复特定按钮尺寸会影响小尺寸屏幕。
答案 2 :(得分:0)
您想要调整第二个按钮的大小。
如果某个按钮包含图标,请将其置于How to center icon and text in a android button with width set to "fill parent"的中心位置。例如,在CommandKey key = command.getKey();
switch(key.ordinal()) {
case 1:
return IncidentType.StatusChange;
case 2:
return IncidentType.Notification;
...
内移动Button
或使用FrameLayout
和LinearLayout
创建ImageView
。
如果您的案例是自定义视图且按钮是带图标的TextView
,请覆盖以下事件:
FrameLayout
如果你有一个没有图标的按钮,只有文字,调整大小会更简单:
boolean isButtonResized;
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
if (!isButtonResized) {
int buttonWidth = firstButton.getWidth();
if (buttonWidth != 0) {
isButtonResized = true;
ViewGroup.LayoutParams lp = secondButton.getLayoutParams();
lp.width = buttonWidth;
secondButton.setLayoutParams(lp);
}
}
}