【发布时间】:2020-06-13 07:17:09
【问题描述】:
我的应用的按钮位置在不同设备上会发生变化。有时按钮变大,有时变小,有时部分按钮不可见。我使用垂直线性布局。按钮位于可绘制文件夹中,按钮大小为 227x231 像素。
有一些示例截图。 Pixel 2 - Pixel 3a - Mi 9T Pro
我该如何解决?
<?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"
android:background="@drawable/back4">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="95dp"
android:background="@drawable/a"
android:orientation="horizontal">
<TextView
android:id="@+id/teamName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:fontFamily="@font/andika"
android:paddingTop="20dp"
android:text="Team 1"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="20sp" />
<TextView
android:id="@+id/score"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:paddingLeft="50dp"
android:text="5"
android:textColor="#303f9f"
android:textSize="36sp"
android:textStyle="bold" />
<TextView
android:id="@+id/roundText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="15dp"
android:layout_weight="1"
android:fontFamily="@font/andika"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:text="Round 1/5"
android:textAlignment="viewStart"
android:textColor="#000000"
android:textSize="20sp" />
</LinearLayout>
<TextView
android:id="@+id/timeText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="100dp"
android:layout_marginTop="20dp"
android:layout_marginRight="100dp"
android:fontFamily="@font/arsenal_bold"
android:text="60"
android:textAlignment="center"
android:textColor="#E2DADA"
android:textSize="40sp"
android:textStyle="bold" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="0"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="419dp"
android:background="@drawable/game4"
android:orientation="vertical">
<TextView
android:id="@+id/guessWord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="80dp"
android:text="Guess "
android:textAlignment="center"
android:textColor="#FFFFFF"
android:textSize="38sp"
android:textStyle="bold" />
<TextView
android:id="@+id/translateWord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="80dp"
android:text="(Translate)"
android:textAlignment="center"
android:textColor="#D0FFFFFF"
android:textSize="26sp"
android:textStyle="bold" />
<TextView
android:id="@+id/tabuWord1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="35dp"
android:layout_marginEnd="80dp"
android:text="TextView"
android:textAlignment="center"
android:textSize="30sp" />
<TextView
android:id="@+id/tabuWord2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="80dp"
android:text="TextView"
android:textAlignment="center"
android:textSize="30sp" />
<TextView
android:id="@+id/tabuWord3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="80dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="80dp"
android:text="TextView"
android:textAlignment="center"
android:textSize="30sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="123dp"
android:orientation="horizontal">
<Button
android:id="@+id/tabuButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="30dp"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="30dp"
android:layout_weight="1"
android:background="@drawable/tabubutton2" />
<Button
android:id="@+id/passButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="30dp"
android:layout_weight="1"
android:background="@drawable/pasbutton2" />
<Button
android:id="@+id/trueButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="30dp"
android:layout_marginBottom="30dp"
android:layout_weight="1"
android:background="@drawable/truebutton2" />
</LinearLayout>
</LinearLayout>
【问题讨论】:
-
您是否尝试过不对您的 LinearLayouts 使用固定 layout_height 而是使用 wrap_content?在 Andoird 中,显示器的尺寸和密度变化很大,有时很难在所有设备上以绝对值实现相同的布局。
-
我将布局高度从 (android:layout_height="123dp") 更改为 (android:layout_height="wrap_content")。但它不起作用。
-
您也可以使用
RelativeLayout,因为这样您就可以完全控制如何排列视图并将它们绑定在一起,这样它们就不会漏掉。
标签: android xml android-studio android-layout android-linearlayout