在布局方面支持不同的屏幕尺寸和密度

时间:2016-12-17 20:42:57

标签: android android-layout android-recyclerview

我想知道如何让我的应用支持不同的屏幕尺寸和密度,包括平板电脑,关于布局。我在SO上找到了不同的答案,但我找不到最能解释这个问题的答案。

我已经把它包括在我的清单中了:

<supports-screens
    android:anyDensity="true"
    android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:xlargeScreens="true" />

根据this的答案,我应该创建多个布局文件夹,例如small,large,xlarge。

根据documentation我应该创建多个布局并使用大小限定符,例如sw<N>dp

如果我的应用需要同时支持手机和手机,那么哪种解决方案最好?

其他问题: 关于上述问题,我有一个带有项目清单的回收者视图。如果屏幕是纵向的,那么就有一个列表,如果屏幕是横向的,那么就是网格。

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        LinearLayoutManager manager = new LinearLayoutManager(getContext());
        mBinder.rvHistoryList.setLayoutManager(manager);
    } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        GridLayoutManager manager = new GridLayoutManager(getContext(), 2);
        mBinder.rvHistoryList.setLayoutManager(manager);
    }

但是,如果应用程序在平板电脑上以纵向模式使用,我希望这些项目在网格中按行排列,如果应用程序在平板电脑模式的平板电脑上使用,我希望这些项目能够在由4连续排序的网格中。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

为不同尺寸创建几个布局是古老而混乱的方法 您可以为每个布局和组件设置权重。

这是开始的好教程。

http://www.101apps.co.za/index.php/articles/using-android-s-layout-weight-attribute.html