java - 当我在平板电脑上运行应用程序时,Android Studio 中的按钮看起来很乱
问题描述
我正在尝试设计 4 行和 3 列相同大小的按钮。当我点击“推断约束”时,它在 Android Studio 中看起来确实不错 - 但是当我在平板电脑上运行它时,它看起来很乱!我做错了什么?我为 6 个按钮添加了 xml 代码(不是全部 12 个,因为它太长了)。
我希望输出看起来像这样:
但实际输出是大小和顺序不同的按钮
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MemoryGame"
tools:layout_editor_absoluteY="81dp">
<Spinner
android:id="@+id/muses_spinner"
android:layout_width="0dp"
android:layout_height="29dp"
android:layout_marginTop="48dp"
android:layout_marginBottom="38dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/connect_button" />
<Button
android:id="@+id/button0_0"
android:layout_width="0dp"
android:layout_height="97dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="124dp"
android:layout_marginRight="124dp"
android:layout_marginBottom="1dp"
android:text="Button"
app:layout_constraintBottom_toTopOf="@+id/button1_0"
app:layout_constraintEnd_toStartOf="@+id/button1_2"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button1_0"
android:layout_width="124dp"
android:layout_height="97dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="5dp"
android:layout_marginRight="5dp"
android:text="Button"
app:layout_constraintEnd_toStartOf="@+id/button1_1"
app:layout_constraintHorizontal_chainStyle="spread_inside"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button0_0" />
<Button
android:id="@+id/button0_1"
android:layout_width="124dp"
android:layout_height="97dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:layout_marginBottom="1dp"
android:text="BUTTON"
app:layout_constraintBottom_toTopOf="@+id/button1_1"
app:layout_constraintEnd_toStartOf="@+id/button0_2"
app:layout_constraintStart_toEndOf="@+id/button0_0"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button1_1"
android:layout_width="124dp"
android:layout_height="97dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:text="Button"
app:layout_constraintEnd_toStartOf="@+id/button1_2"
app:layout_constraintStart_toEndOf="@+id/button1_0"
app:layout_constraintTop_toBottomOf="@+id/button0_1" />
<Button
android:id="@+id/button1_2"
android:layout_width="0dp"
android:layout_height="103dp"
android:layout_marginEnd="7dp"
android:layout_marginRight="7dp"
android:text="Button"
app:layout_constraintBaseline_toBaselineOf="@+id/button1_1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/button0_0" />
<Button
android:id="@+id/button0_2"
android:layout_width="124dp"
android:layout_height="97dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="7dp"
android:layout_marginRight="7dp"
android:layout_marginBottom="1dp"
android:text="Button"
app:layout_constraintBottom_toTopOf="@+id/button1_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/button1_1"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/connect_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="302dp"
android:layout_marginLeft="302dp"
android:layout_marginBottom="64dp"
android:text="connect"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/refresh_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginLeft="5dp"
android:layout_marginEnd="203dp"
android:layout_marginRight="203dp"
android:layout_marginBottom="1dp"
android:text="refresh"
app:layout_constraintBottom_toTopOf="@+id/muses_spinner"
app:layout_constraintEnd_toStartOf="@+id/connect_button"
app:layout_constraintStart_toStartOf="@+id/muses_spinner" />
</android.support.constraint.ConstraintLayout>
解决方案
您可以尝试在约束布局中添加网格布局。我将列数设置为 2,但在您的情况下,您只需将其更改为 3
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Glossy_Grape"
tools:context=".ShopActivity">
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="match_parent"
android:layout_height="650dp"
android:columnCount="2"
android:columnOrderPreserved="false"
android:translationY="80dp"
app:layout_constraintTop_toTopOf="parent">
<ImageButton
android:id="@+id/btnFireEgg"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:layout_gravity="fill"
android:width="0dp"
android:background="?android:selectableItemBackground"
android:padding="20dp"
android:scaleType="fitCenter"
android:src="@drawable/fireegg_copy"
android:contentDescription="@string/name"></ImageButton>
</GridLayout>
推荐阅读
- python - 使用 Json 内容抓取网站会导致值错误
- javascript - 移动设备与桌面上的幻灯片显示不正确
- django - Django DRF - api webview中的“隐藏用户”(必填字段)
- firebase - 选项卡打开但不在焦点时出现 Firebase 通知问题
- python - raise ValueError("未转换的数据仍然存在:%s" % ValueError:未转换的数据仍然存在:
- amazon-web-services - MEAN 堆栈应用程序的 AWS 结构
- react-router - @expo/vector-icon 未加载 Android 设备
- html - 如何精确移动弹性项目?
- c# - .NET 3.1:“更新条目时发生错误。有关详细信息,请参阅内部异常”
- leaflet - 如何在 BindPopup 上获取内容