Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的响应式布局_Java_Android_Xml - Fatal编程技术网

Java Android中的响应式布局

Java Android中的响应式布局,java,android,xml,Java,Android,Xml,我想在Android中做一个响应性设计,也就是说,我需要这样一个布局,我将以编程方式添加视图,它们将根据屏幕大小进行调整。 例如: 我想在布局中添加10个视图 当我添加它们时,如果每行只有三个视图,那么它们会自动调整为四行三列,即 [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] 在builde

我想在Android中做一个响应性设计,也就是说,我需要这样一个布局,我将以编程方式添加视图,它们将根据屏幕大小进行调整。 例如: 我想在布局中添加10个视图 当我添加它们时,如果每行只有三个视图,那么它们会自动调整为四行三列,即

[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]

builde.gradle
add中

dependencies {
...
compile 'com.google.android:flexbox:0.3.0'
}
并在布局xml中使用它。i、 e

<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>

...

Flexbox解决方案似乎对您有效,但是有另一种方法可以提供解决此问题的不同途径。如果您不知道,实际上可以使用相同的名称定义不同的XML布局文件—1用于纵向模式,另一个用于横向模式

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

请注意,这增加了应用程序本身的复杂性,因为当用户切换其设备的方向时,操作系统正在销毁和重新绘制视图,因此需要考虑活动生命周期


希望在这种情况下,或者在您希望根据设备方向完成不同布局的其他情况下,这会有所帮助

使用GridView显示您的视图但是如何添加响应性?或者使用GridLayout管理器的Recyclerview,您可以在示例中看到视图是否根据响应什么的宽度进行调整?您的屏幕大小不会超过初始布局。可以在res/layout land文件夹文件中进行方向更改。此布局视图不会转到下一行。不管我有多少观点add@Faiq你做错了什么。也许您必须对
flexbox
的父布局进行一些修改。完成!达到了目的!有没有任何方法可以使视图之间的空间也可以通过选择剩余的当前位置来自动安排space@Faiq不知道你的代码很难给你提示。我还想知道,你必须打开一个新的问题,因为这超出了当前的问题。感谢这个解决方案!顺便说一句,我想在flexlayout中,视图可能会自动销毁?从来没有使用过flexlayout,所以我不能肯定地告诉您。这很可能是由于UI的改变而被破坏的——我认为它将遵循Android架构@Faiq的其余部分