【问题标题】:Make RelativeLayout to fit all screen size使 RelativeLayout 适合所有屏幕尺寸
【发布时间】:2019-12-14 16:28:43
【问题描述】:

我正在尝试修改我的相对布局以适应所有屏幕尺寸。我知道我的问题是我手动设置屏幕上每个元素的边距,因为在 Android Studio 的编辑器上设置更容易,但显然,一旦我在另一台设备上尝试应用程序,元素就会一团糟。现在,我使用“match_parent”和 wrap_content 命令对其进行了修改,使其更加灵活,这是我在 Pixel C 上尝试时的结果:

问题是当我更换设备时,例如,如果我在 Galaxy Tab 上尝试它,结果如下:

这是代码:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/slidelinearlayout"
    android:background="@drawable/background_main2">

<LinearLayout
    android:id="@+id/upperLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="160dp"
        android:layout_marginTop="140dp"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/slideimg"
            android:layout_width="400dp"
            android:layout_height="350dp"
            android:layout_marginRight="150dp" />
        <TextView
            android:id="@+id/txttitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="60dp"
            android:layout_marginTop="20dp"
            android:text="Senza nome"
            android:textColor="@android:color/black"
            android:textSize="40sp"
            android:textStyle="bold" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/upperTableHeader"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="160dp"
            android:text="Table Header here"
            android:textColor="@android:color/holo_red_light"
            android:textSize="30sp" />

        <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:id="@+id/tl"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/t2"
            android:layout_alignParentEnd="true" >

        <TableRow
            android:id="@+id/tr_item_1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/item_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="  Flessibilità"
                android:textColor="#030101"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/f_item_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>

        <TableRow
            android:id="@+id/tr_item_2"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/item_2"
                android:layout_width="202dp"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="  Fluidità"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/fl_item_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>

        <TableRow
            android:id="@+id/tr_item_3"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/item_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="  Originalità"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/o_item_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>

        <TableRow
            android:id="@+id/tr_item_4"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/item_4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="  Elaborazione"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/el_item_4"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>

        <TableRow
            android:id="@+id/tr_item_5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/item_5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="  Titolo"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/t_item_5"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>
    </TableLayout>
    </LinearLayout>
</LinearLayout>

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/upperLayout"
    android:layout_alignParentRight="true"
    android:layout_marginTop="30dp"
    android:layout_marginRight="80dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/lowerTableHeader"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Table Header here"
        android:textColor="@android:color/holo_red_light"
        android:textSize="30sp" />

    <TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/tl_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignEnd="@+id/tl">

        <TableRow
            android:id="@+id/tr_item_6"
            android:layout_width="222dp"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/t1_item_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="    Tempo di reazione"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/tempo_item_1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>

        <TableRow
            android:id="@+id/tr_item_7"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/t2_item_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="    Tempo di completamento"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/tempo_item_2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>

        <TableRow
            android:id="@+id/tr_item_8"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@drawable/table_row_bg"
            android:padding="2dp">

            <TextView
                android:id="@+id/n_cancellature"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingRight="10dp"
                android:text="    Numero cancellature"
                android:textColor="#070404"
                android:textSize="30dp" />

            <TextView
                android:id="@+id/n_3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@drawable/table_cell_bg"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textColor="#070404"
                android:textSize="30dp" />
        </TableRow>
    </TableLayout>
</LinearLayout>

【问题讨论】:

  • 这并不能回答您当前的问题,但将来考虑使用 ConstraintLayout 以避免类似问题。使用这种布局,您的层次结构是扁平的,所有内容都可以与屏幕相关,因此所有内容都会根据不同的屏幕尺寸调整大小。
  • 不要使用paddingLeftpaddingRightmarginLeftmarginRight等属性对齐布局中的元素。您正在硬编码它的位置,所以当它显示到不同的设备上时,它会尝试将自己定位在那里,但当然,分辨率和空间都会相应地减少或增加。

标签: java android layout android-relativelayout


【解决方案1】:

您可以使用 SDP 为不同的设备设置控件或文本的大小。

一个 android SDK,它提供了一个新的尺寸单位 - sdp (scalable dp)。此尺寸单位随屏幕尺寸缩放。它可以帮助 Android 开发者支持多屏。

链接 - https://github.com/intuit/sdp

【讨论】:

    【解决方案2】:

    你可以在 res 中创建不同的布局目录

    并专门为该屏幕尺寸设计用户界面

    Android 会自动检测必须使用的尺寸

    like : 布局(这是默认设置,适用于所有设备) layout-sw600(适用于 7 和 8 英寸屏幕) layout-sw720(适用于 10 ,11 和 12 屏幕)

    更多信息请关注this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2013-01-05
      • 1970-01-01
      相关资源
      最近更新 更多