即使使用 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,布局也不适合屏幕截图的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中拍摄特定布局的“屏幕截图”

android 怎么获取当前屏幕的截图

带有缩放的 Windows 屏幕截图

根布局的屏幕截图,即滚动视图

如何查看“屏幕截图:可通过屏幕获取”?

Web 浏览器的语义截图