android-studio - 设计 Android 开发者屏幕尺寸
问题描述
嗨,我需要一些建议/帮助
我正在设计一个用于教育目的的应用程序,但要与不同的屏幕尺寸作斗争。
我正在使用 Android Studio 创建屏幕布局。
到目前为止,我所做的一切都很好,直到某一点。
我尝试使用约束布局/线性布局和相对布局,但都有相同的问题。
我照常创建主布局,然后创建具有相同活动名称但密度不同的新布局资源文件。
但是由于某些奇怪的原因,我的一些测试手机采用了一定的密度布局,但完全不成比例,即使它在 IDE 上的布局看起来是正确的,但在移植到手机的那一刻它就消失了。
创建可以满足所有布局的布局的最佳方法是什么?
这是我的布局示例
<?xml version="1.0" encoding="utf-8"?>
<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"
tools:context=".login.LoginActivity"
android:background="@drawable/background"
android:padding="10dp">
<TextView
android:id="@+id/tv_appName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="250dp"
android:layout_marginEnd="8dp"
android:text="@string/app_name"
android:textColor="@color/colorAccent"
style="@style/Base.TextAppearance.AppCompat.Headline"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textAlignment="center"
android:textStyle="bold"
android:textSize="28dp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="50dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_appName"
android:background="@drawable/input_shape"
android:padding="15dp"
android:textColorHint="@color/colorAccent"
android:textColor="@color/colorAccent"
android:id="@+id/edittext1"
android:singleLine="true"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="50dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="50dp"
android:ems="10"
android:inputType="textPersonName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/edittext1"
android:background="@drawable/input_shape"
android:padding="15dp"
android:textColorHint="@color/colorAccent"
android:textColor="@color/colorAccent"
android:id="@+id/edittext2"
android:singleLine="true"/>
<Button
android:id="@+id/btn_button1"
android:layout_width="134dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
app:layout_constraintStart_toStartOf="@+id/edittext2"
app:layout_constraintTop_toBottomOf="@+id/edittext2"
android:background="@drawable/btn_shape"
android:text="Button 1"/>
<Button
android:id="@+id/btn_button2"
android:layout_width="134dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
app:layout_constraintEnd_toEndOf="@+id/edittext2"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/btn_button1"
app:layout_constraintTop_toBottomOf="@+id/btn_button1"
android:background="@drawable/btn_shape"
android:text="Button 2"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
解决方案
我很确定您的视图使用了固定大小。
切勿对视图使用固定大小。如果您使用 aConstraintLayout
然后将任何视图的layout_width
and设置layout_height
为 0dp (这将使视图尽可能大,只要它不超过约束)或wrap_content
(这将自动使视图只有大小它需要)。在其他布局上而不是使用 0dp 来使视图尽可能大,使用match_parent
. wrap_content
在每个布局中做同样的事情。
推荐阅读
- php - 无法设置未定义的属性“X-CSRF-TOKEN”
- filter - 如何在wireshark中搜索特定的纪元格式时间戳
- c - 函数内调用函数有问题
- jenkins - 如何通过代码再次重新运行参数化 Jenkins 作业(不通过 UI 使用重建插件)?
- pdf - 无法在 VS Code 中将 Markdown 转换为 PDF
- node.js - 如何在 NodeJS 的 MongoDB 驱动程序中加入嵌套数组?
- visual-studio-code - 我可以使用 VS Code 内置设置同步功能排除某些设置吗?
- postgresql - Postgres 多列文本索引
- c# - 从 Json 创建 C# 类
- python - 创建环形图的两种方法