2017-09-05 220 views
1

我想在Android中进行响应式设计,即我需要这样一种布局,我将以编程方式添加视图,并且会根据屏幕大小调整它们。 例如: 我想补充的布局 10次当我加入他们,如果有地方每行仅三个视图然后自动他们得到调整四行三列,即Android中的响应式布局

[0, 0] [0,1] [0,2]

[1,0] [1,1] [1,2]

[2,0] [2,1] [2,2]

[3,0]

但作为在横向模式下,有更多的空间垂直

[0,0] [0,1] [0,2] [0,3] [0,4]

[ 1,0] [1,1] [1,2] [1,3] [1,4]

+2

使用GridView来显示你的视图 –

+0

是的,但如何添加响应? – Faiq

+0

或使用GridLayout管理器的Recyclerview –

回答

1

Use flexbox layout

builde.gradle添加

dependencies { 
... 
compile 'com.google.android:flexbox:0.3.0' 
} 

并在布局xml中使用它。即

<com.google.android.flexbox.FlexboxLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:alignItems="center" 
    app:alignContent="center" 
    app:flexDirection="row" 
    app:flexWrap="wrap"> 

    ... 
</com.google.android.flexbox.FlexboxLayout> 
+0

在此布局视图不会到下一行。无论我添加多少个视图 – Faiq

+0

@Faiq你都做错了什么。也许你必须对'flexbox'的父布局进行一些修改。 –

+0

完成!达到目的!谢谢 – Faiq

1

看来Flexbox解决方案为你工作,但是还有另外一种方法,可以提供这个问题的不同途径。如果您不知道,可以实际定义具有相同名称的不同XML布局文件 - 其中1个用于纵向模式,另一个用于横向模式。

创建新布局文件时,如果右键单击layout目录并选择新建>布局资源文件,您可以在此处配置方向。在可用限定符部分,向下滚动到方向并将其添加到文件中。此时,您可以选择此布局的方向,如果您将文件命名为相反方向,则您的应用程序将自动为适合设备当前方向的视图充气。 Android Studio还将了解您在编辑器中选择的不同布局方向,并且您在Design选项卡中看到的屏幕将相应地进行调整,即横向布局文件将具有更多垂直空间以构建UI。

请注意,这增加了应用程序本身的复杂程度,因为活动生命周期将需要考虑在内,因为视图正在被操作系统销毁并重新绘制,以响应用户切换的时间他们的设备的方向。

希望这有助于在这种情况下,或在其他一些情况下,你想根据设备的方向完成不同的布局!

+0

感谢您的解决方案!顺便说一句我想在flexlayout可能会自动销毁视图? – Faiq

+0

从来没有与柔性布局合作,所以我无法确定地告诉你。可能是因为UI改变而被破坏 - 我认为它会遵循Android架构的其余部分@Faiq – DMP