我创建了一个自适应布局,它的工作很好,但我知道它不是很好,所以,需要一个更好的解决方案。

问题描述 投票:-1回答:1

我创建的一个是小气的多的自适应,但出于性能的考虑,我觉得它不是很有用。我添加了一些空的线性布局,并添加了权重,在Top、左、右、中、下添加自适应的边距。但是我想可能还有其他的解决方案来摆脱这些空布局,考虑到布局是自适应的。先谢谢你:)

<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".StacksGameActivity">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1">

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="4"
    android:orientation="horizontal"
    android:gravity="center">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_margin="2dp">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_margin="2dp">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1">

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="4"
    android:gravity="center"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_margin="2dp">


        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

            <Button
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/button_n" />

        </FrameLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:layout_weight="1"
        android:gravity="center"
        android:layout_margin="2dp">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

        </FrameLayout>

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_margin="2dp"
            android:background="@color/royal_blue_color">

        </FrameLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"/>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1">

</LinearLayout>

我附上了一张图片解释这个布局 here请建议我,如果我可以使用其他的东西,使它看起来像这个布局,而不添加那些空布局。

android xml android-studio android-layout android-linearlayout
1个回答
1
投票

你可以使用一个 GridLayoutManager 以摆脱这个空的LinearLayouts,这可能会影响性能。

你可以在资源中设置一个整数。

<integer name="grid_column_count">1</integer>

然后在代码中获取它

int gridColumnCount = 
        getResources().getInteger(R.integer.grid_column_count);

然后使用它

mRecyclerView.setLayoutManager(new 
                     GridLayoutManager(this, gridColumnCount));

设置你的项目居中,然后为整数设置不同的值。grid_column_count 根据设备宽度的不同,将其值放在不同的资源目录中。

这样你就不会使用空的线性布局,并且会根据设备宽度的不同,用不同的列数实现相同的外观和感觉。

你可以看到一个完整的例子,即在 Android基础知识05.3: 自适应布局 编码实验室。

© www.soinside.com 2019 - 2024. All rights reserved.