【问题标题】:Layout doesnt fit screenshot even when using dp即使使用 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_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:background="#2190F3"
android:orientation="vertical" >


<TextView
    android:id="@+id/textView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    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_width="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_height="wrap_content"

    android:orientation="horizontal">

    <Button
        android:id="@+id/button3"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_weight="3"
        android:text="X" />

    <Button
        android:id="@+id/button"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_weight="3"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="120dp"
        android:layout_weight="3"
        android:layout_height="120dp"
        android:text="Button" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/button4"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_weight="3"
        android:text="X" />

    <Button
        android:id="@+id/button5"
        android:layout_weight="3"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:text="Button" />

    <Button
        android:id="@+id/button6"
        android:layout_weight="3"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:text="Button" />
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <Button
        android:id="@+id/button7"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_weight="3"
        android:text="X" />

    <Button
        android:id="@+id/button8"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_weight="3"
        android:text="Button" />

    <Button
        android:id="@+id/button9"
        android:layout_width="120dp"
        android:layout_weight="3"
        android:layout_height="120dp"
        android:text="Button" />
</LinearLayout>

<Button
    android:id="@+id/button11"
    android:layout_width="120dp"
    android:layout_height="60dp"
    android:layout_marginTop="50dp"
    android:layout_gravity="center_horizontal"
    android:text="Button" />

</LinearLayout>

【问题讨论】:

    标签: java android xml android-studio android-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_width="match_parent"
    android:layout_height="match_parent"
    android:background="#2190F3"
    android:orientation="vertical"
    android:paddingLeft="16dp"
    android:paddingRight="16dp">
    
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        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_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="100dp"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/button3"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="X" />
    
        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="Button" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="Button" />
    
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/button4"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="X" />
    
        <Button
            android:id="@+id/button5"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="Button" />
    
        <Button
            android:id="@+id/button6"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="Button" />
    
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:orientation="horizontal">
    
        <Button
            android:id="@+id/button7"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="X" />
    
        <Button
            android:id="@+id/button8"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="Button" />
    
        <Button
            android:id="@+id/button9"
            android:layout_width="0dp"
            android:layout_height="120dp"
            android:layout_weight="1"
            android:text="Button" />
    
    </LinearLayout>
    
    <Button
        android:id="@+id/button11"
        android:layout_width="120dp"
        android:layout_height="60dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="50dp"
        android:text="Button" />
    

    我希望它会起作用。这不是最好的解决方案。最好的解决方案是使用约束布局。

    【讨论】:

    • 感谢您的回答。你能告诉我你的改变以及你为什么这样做吗?我想了解发生了什么以及解决方案是什么
    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 2017-07-05
    • 1970-01-01
    • 2013-04-18
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多