我使用一个简单的水平LinearLayout将3个按钮并排放置,所有按钮的宽度都相同。我通过以下xml文本实现了这一点:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:baselineAligned="false" >
<Button
android:id="@+id/help"
style="android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/help" />
<Button
android:id="@+id/close"
style="android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/closemultigame" />
<Button
android:id="@+id/ok"
style="android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/restartmultigame" />
</LinearLayout>
现在布局如下所示:
按钮layout_height被定义为wrap_content,但是最右边的按钮并不 Package 它的内容。它在不同的设备上看起来是不同的,在一些设备上看起来不错。我实际上想要实现的是三个按钮,等宽和等高,每个按钮的文本水平和垂直居中。你会建议什么方法?
添加:根据要求的整个布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="@dimen/activity_horizontal_margin" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:drawableLeft="@drawable/matchandfit"
android:drawablePadding="@dimen/activity_horizontal_margin"
android:gravity="center_vertical"
android:padding="@dimen/activity_horizontal_margin"
android:text="@string/multigameover"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/status"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="@string/multigameresult"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout
android:id="@+id/masterresult"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/masterresultinfo"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:baselineAligned="false" >
<Button
android:id="@+id/help1"
style="android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/help" />
<Button
android:id="@+id/close1"
style="android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/closemultigame" />
<Button
android:id="@+id/ok1"
style="android:buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:text="@string/restartmultigame" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</ScrollView>
正如Wasim Ahmed所指出的,这要归功于ScrollView。现在我使用ScrollView来确保按钮即使在小型设备的横向中也保持可访问性。(布局是为对话框设计的)。有没有其他方法可以始终保持按钮的可访问性/可见性?
解决方案:我找到的解决方案或更好的解决方案是在封闭LinearLayout的末尾添加一个TextView。这个TextView在其高度的一半处被垂直剪切,但是它不包含文本,所以没有人会注意到。在封闭LinearLayout的底部添加一些填充没有帮助
6条答案
按热度按时间vyswwuz21#
我一次又一次地观察到,即使指定
android:layout_height="wrap_content"
,Button
类也不调整文本大小。您可以执行以下两项操作之一:
**1.**您可以手动设置
Button
的文本大小或宽度,直到文本大小合适为止(模拟wrap_content
的外观)。**2.**改用
TextView
(当您指定android:layout_height="wrap_content"
时,它确实正确地换行了文本),并在TextView
上设置onClickListener
来模拟按钮的行为。1tuwyuhd2#
按钮默认为
minHeight
,删除Button
中的minHeight
,如下所示:qrjkbowd3#
不要将按钮的高度换行,而是使用
fill_parent
使按钮的高度彼此相同。样品:
结果:
bvpmtnay4#
我试过了而且成功了:
1)在../res/values/strings.xml中定义:
行1行1\n行2行2
2)在布局文件中引用它:
wkftcu5l5#
使用android:layout_width=“wrap_content”等方法在切换按钮中换行时没有运气,所以我在希望换行的标签字符串中添加了反斜杠n(\n)。例如,“Press to START”变成了“Press \nto \nSTART”。
hgc7kmma6#
尝试使用android:layout_width=“ Package 内容”而不是android:layout_width=“0dp”并查看id