具有一行而不是两行文本的线性布局中按钮的奇怪行为
Odd behavior of button in linear layout that has one line of text instead of two
我有一个 linear layout
包裹在 HorizontalScrollView
中。除了布局中的一个按钮高于其余按钮外,一切似乎都运行良好。
这个按钮看起来比其他按钮高的原因是它只有一行而不是两行文本。
问题截图如下:
虽然布局用于键盘服务,但我认为这不是问题,因为在 XML 布局文件的设计选项卡中仍然会出现此问题。
这里是整个服务的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="50dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:id="@+id/tablayout">
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="What did you say?!"
android:id="@+id/T_YouSay"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="I identify as a..."
android:id="@+id/T_Identify"
android:textSize="12sp"
android:textAllCaps="false"/>
//This button is the one that is higher then the rest. Notice how
//it is only one line of text instead of two.
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="That's some..."
android:id="@+id/Thats_some"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Here's the thing..."
android:id="@+id/theThing"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Other copypastas"
android:id="@+id/tab_Misc"
android:textSize="12sp"
android:textAllCaps="false"/>
</LinearLayout>
</HorizontalScrollView>
那么,为什么在这个 Linear Layout
包裹在 HorizontalScrollView
中的只有一行文本的按钮比其他按钮高,我该如何解决它?
添加
android:baselineAligned="false"
到包含按钮 (id == tabLayout) 的 LinearLayout。
简单易行的解决方案是将重力属性添加到@id/tablayout的LinearLayout。
android:重力="center_vertical"
您可以使用权重为您的按钮分配相等的 space。硬编码宽度可能不是一个好主意,因为您的按钮将无法利用大屏幕和横向模式。这是您的布局的增强版。
<LinearLayout
android:weightSum="5"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/tablayout">
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="What did you say?!"
android:id="@+id/T_YouSay"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="I identify as a..."
android:id="@+id/T_Identify"
android:textSize="12sp"
android:textAllCaps="false"/>
//This button is the one that is higher then the rest. Notice how
//it is only one line of text instead of two.
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="That's some..."
android:id="@+id/Thats_some"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="50dp"
android:text="Here's the thing..."
android:id="@+id/theThing"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="Other copypastas"
android:id="@+id/tab_Misc"
android:textSize="12sp"
android:textAllCaps="false"/>
</LinearLayout>
</LinearLayout>
结果
我有一个 linear layout
包裹在 HorizontalScrollView
中。除了布局中的一个按钮高于其余按钮外,一切似乎都运行良好。
这个按钮看起来比其他按钮高的原因是它只有一行而不是两行文本。
问题截图如下:
虽然布局用于键盘服务,但我认为这不是问题,因为在 XML 布局文件的设计选项卡中仍然会出现此问题。
这里是整个服务的布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="50dp">
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:id="@+id/tablayout">
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="What did you say?!"
android:id="@+id/T_YouSay"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="I identify as a..."
android:id="@+id/T_Identify"
android:textSize="12sp"
android:textAllCaps="false"/>
//This button is the one that is higher then the rest. Notice how
//it is only one line of text instead of two.
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="That's some..."
android:id="@+id/Thats_some"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Here's the thing..."
android:id="@+id/theThing"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:text="Other copypastas"
android:id="@+id/tab_Misc"
android:textSize="12sp"
android:textAllCaps="false"/>
</LinearLayout>
</HorizontalScrollView>
那么,为什么在这个 Linear Layout
包裹在 HorizontalScrollView
中的只有一行文本的按钮比其他按钮高,我该如何解决它?
添加
android:baselineAligned="false"
到包含按钮 (id == tabLayout) 的 LinearLayout。
简单易行的解决方案是将重力属性添加到@id/tablayout的LinearLayout。
android:重力="center_vertical"
您可以使用权重为您的按钮分配相等的 space。硬编码宽度可能不是一个好主意,因为您的按钮将无法利用大屏幕和横向模式。这是您的布局的增强版。
<LinearLayout
android:weightSum="5"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/tablayout">
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="What did you say?!"
android:id="@+id/T_YouSay"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="I identify as a..."
android:id="@+id/T_Identify"
android:textSize="12sp"
android:textAllCaps="false"/>
//This button is the one that is higher then the rest. Notice how
//it is only one line of text instead of two.
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="That's some..."
android:id="@+id/Thats_some"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="50dp"
android:text="Here's the thing..."
android:id="@+id/theThing"
android:textSize="12sp"
android:textAllCaps="false"/>
<Button
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="50dp"
android:text="Other copypastas"
android:id="@+id/tab_Misc"
android:textSize="12sp"
android:textAllCaps="false"/>
</LinearLayout>
</LinearLayout>
结果