即使使用 dp,布局也不适合屏幕截图
Posted
技术标签:
【中文标题】即使使用 dp,布局也不适合屏幕截图【英文标题】:Layout doesnt fit screenshot even when using dp 【发布时间】:2020-04-01 04:24:09 【问题描述】:我是 android 编程新手,并且在设计我的井字游戏应用程序时遇到了困难。 在布局编辑器中,我在屏幕底部有一个按钮。当我在手机上运行该应用程序时,由于我的屏幕不够大,因此只能看到按钮的顶部。谁能指出我正确的方向并解释为什么会这样?
这是我手机应用中的图片:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:background="#2190F3"
android:orientation="vertical" >
<TextView
android:id="@+id/textView2"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:textSize="40sp"
android:textStyle="bold"
android:textColor="#000000"
android:text="@string/title" />
<LinearLayout
android:layout_marginTop="100dp"
android:layout_
android:layout_gravity="center_horizontal"
android:layout_
android:orientation="horizontal">
<Button
android:id="@+id/button3"
android:layout_
android:layout_
android:layout_weight="3"
android:text="X" />
<Button
android:id="@+id/button"
android:layout_
android:layout_
android:layout_weight="3"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_
android:layout_weight="3"
android:layout_
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_gravity="center_horizontal"
android:layout_
android:orientation="horizontal">
<Button
android:id="@+id/button4"
android:layout_
android:layout_
android:layout_weight="3"
android:text="X" />
<Button
android:id="@+id/button5"
android:layout_weight="3"
android:layout_
android:layout_
android:text="Button" />
<Button
android:id="@+id/button6"
android:layout_weight="3"
android:layout_
android:layout_
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_gravity="center_horizontal"
android:layout_
android:orientation="horizontal">
<Button
android:id="@+id/button7"
android:layout_
android:layout_
android:layout_weight="3"
android:text="X" />
<Button
android:id="@+id/button8"
android:layout_
android:layout_
android:layout_weight="3"
android:text="Button" />
<Button
android:id="@+id/button9"
android:layout_
android:layout_weight="3"
android:layout_
android:text="Button" />
</LinearLayout>
<Button
android:id="@+id/button11"
android:layout_
android:layout_
android:layout_marginTop="50dp"
android:layout_gravity="center_horizontal"
android:text="Button" />
</LinearLayout>
【问题讨论】:
【参考方案1】:这是因为您的预览屏幕截图正在模拟特定的 dpi,而您的实际物理设备具有其他一些 dpi。通过在 DP 中插入 size,您将获得一对一的相似性,这是一种误解。有关详细信息,check this
至于您的情况,建议取消硬编码的尺寸并使用“权重”调整 UI 的大小
【讨论】:
您能具体说明您的建议吗?我需要把重量放在哪里?为什么?【参考方案2】:改用这个,
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:background="#2190F3"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<TextView
android:id="@+id/textView2"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:text="@string/title"
android:textColor="#000000"
android:textSize="40sp"
android:textStyle="bold" />
<LinearLayout
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="100dp"
android:orientation="horizontal">
<Button
android:id="@+id/button3"
android:layout_
android:layout_
android:layout_weight="1"
android:text="X" />
<Button
android:id="@+id/button"
android:layout_
android:layout_
android:layout_weight="1"
android:text="Button" />
<Button
android:id="@+id/button2"
android:layout_
android:layout_
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/button4"
android:layout_
android:layout_
android:layout_weight="1"
android:text="X" />
<Button
android:id="@+id/button5"
android:layout_
android:layout_
android:layout_weight="1"
android:text="Button" />
<Button
android:id="@+id/button6"
android:layout_
android:layout_
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
<LinearLayout
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/button7"
android:layout_
android:layout_
android:layout_weight="1"
android:text="X" />
<Button
android:id="@+id/button8"
android:layout_
android:layout_
android:layout_weight="1"
android:text="Button" />
<Button
android:id="@+id/button9"
android:layout_
android:layout_
android:layout_weight="1"
android:text="Button" />
</LinearLayout>
<Button
android:id="@+id/button11"
android:layout_
android:layout_
android:layout_gravity="center_horizontal"
android:layout_marginTop="50dp"
android:text="Button" />
我希望它会起作用。这不是最好的解决方案。最好的解决方案是使用约束布局。
【讨论】:
感谢您的回答。你能告诉我你的改变以及你为什么这样做吗?我想了解发生了什么以及解决方案是什么以上是关于即使使用 dp,布局也不适合屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章