如何正确对齐水平 LinearLayout Dialogfragment 中的按钮
How to properly align buttons in horizontal LinearLayout Dialogfragment
我正在使用一个简单的线性布局,我在 Dialog 片段中调用 onCreateView()
时将其放大。布局示例如下:
<?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:layout_gravity="bottom|center_horizontal"
android:layout_margin="@dimen/activity_horizontal_margin"
android:orientation="horizontal">
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Butt1"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Butt2"
android:textAppearance="?android:textAppearanceLarge" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Butt3"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
问题是此布局中的第一个按钮与其他两个按钮没有正确对齐。我确定这是由于第一个按钮上的文本大小为中等所致。
我想在第一个按钮中显示更长的字符串,方法是使用较小的文本并保持 3 个按钮相同。
如何修复对齐?
编辑。添加了额外的屏幕截图以显示夸大的问题:
也许你可以尝试这样的事情
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_horizontal_margin">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="horizontal"
android:layout_gravity="bottom|center_horizontal">
<Button
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="Butt1"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="Butt2"
android:textAppearance="?android:textAppearanceLarge" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="Butt3"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>
像这样尝试:
它按照您的要求工作。
<?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:layout_gravity="top"
android:layout_margin="@dimen/activity_horizontal_margin"
android:orientation="horizontal">
<Button
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:text="Button1"
android:layout_gravity="center"
android:textSize="10dp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_margin="3dp"
android:layout_gravity="center"
android:layout_weight="1"
android:text="Button2"
android:textSize="20dp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent" />
<Button
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:layout_gravity="center"
android:text="Button3"
android:textSize="20dp"
/>
</LinearLayout>
对于您的最新要求(即,如果您更改文本大小,按钮对齐方式也未更改),只需使用
android:layout_gravity="center"
在每个按钮中。
输出:-
为第一个小文本大小的按钮提供权重并使用 layout_gravity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight=".1"
android:text="This is a very good day "
android:layout_gravity="center"
android:textAppearance="?android:textAppearanceMedium" />
<Button
android:layout_width="0dp"
android:layout_height="100dp"
android:text="Butt2"
android:layout_weight=".1"
android:textAppearance="?android:textAppearanceLarge" />
<Button
android:layout_width="0dp"
android:layout_height="100dp"
android:text="Butt3"
android:layout_weight=".1"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
我正在使用一个简单的线性布局,我在 Dialog 片段中调用 onCreateView()
时将其放大。布局示例如下:
<?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:layout_gravity="bottom|center_horizontal"
android:layout_margin="@dimen/activity_horizontal_margin"
android:orientation="horizontal">
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Butt1"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Butt2"
android:textAppearance="?android:textAppearanceLarge" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="100dp"
android:text="Butt3"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
问题是此布局中的第一个按钮与其他两个按钮没有正确对齐。我确定这是由于第一个按钮上的文本大小为中等所致。
我想在第一个按钮中显示更长的字符串,方法是使用较小的文本并保持 3 个按钮相同。
如何修复对齐?
编辑。添加了额外的屏幕截图以显示夸大的问题:
也许你可以尝试这样的事情
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="@dimen/activity_horizontal_margin">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="100dp"
android:orientation="horizontal"
android:layout_gravity="bottom|center_horizontal">
<Button
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="Butt1"
android:textAppearance="?android:textAppearanceMedium" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="Butt2"
android:textAppearance="?android:textAppearanceLarge" />
<View
android:layout_width="@dimen/fragment_rating_horizontal_button_spacer"
android:layout_height="match_parent" />
<Button
android:layout_width="100dp"
android:layout_height="match_parent"
android:text="Butt3"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>
</RelativeLayout>
像这样尝试:
它按照您的要求工作。
<?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:layout_gravity="top"
android:layout_margin="@dimen/activity_horizontal_margin"
android:orientation="horizontal">
<Button
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:text="Button1"
android:layout_gravity="center"
android:textSize="10dp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_margin="3dp"
android:layout_gravity="center"
android:layout_weight="1"
android:text="Button2"
android:textSize="20dp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent" />
<Button
android:layout_width="fill_parent"
android:layout_height="100dp"
android:layout_margin="3dp"
android:layout_weight="1"
android:layout_gravity="center"
android:text="Button3"
android:textSize="20dp"
/>
</LinearLayout>
对于您的最新要求(即,如果您更改文本大小,按钮对齐方式也未更改),只需使用
android:layout_gravity="center"
在每个按钮中。
输出:-
为第一个小文本大小的按钮提供权重并使用 layout_gravity
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="100dp"
android:layout_weight=".1"
android:text="This is a very good day "
android:layout_gravity="center"
android:textAppearance="?android:textAppearanceMedium" />
<Button
android:layout_width="0dp"
android:layout_height="100dp"
android:text="Butt2"
android:layout_weight=".1"
android:textAppearance="?android:textAppearanceLarge" />
<Button
android:layout_width="0dp"
android:layout_height="100dp"
android:text="Butt3"
android:layout_weight=".1"
android:textAppearance="?android:textAppearanceLarge" />
</LinearLayout>