标签: android-gridlayout

GridLayout的rowOrderPreserved和columnOrderPreserved

可有人请解释什么GridLayoutrowOrderPreservedcolumnOrderPreserved是什么意思?

我不明白这些文档.将值设置为true或false有什么区别.插图将非常有帮助.

android android-layout android-gridlayout

6
推荐指数
1
解决办法
1561
查看次数

android LinearLayout有多行

在我的应用程序中,我从代码中向水平线性布局添加了多个视图.我的问题是当观看次数增加时,它们在单行中不可见并进一步显示在屏幕上.是否有任何布局我可以动态地添加视图,如果后面的视图不适合第一行,它放在第二行.起初我不知道观点的数量虽然我希望一切都是动态的.这样的事情: 在此输入图像描述

layout android view android-gridlayout

6
推荐指数
2
解决办法
4198
查看次数

Android GridLayout API 21

我正在努力完成这样的事情:

在此输入图像描述

目前,我手动设置瓷砖的宽度等于屏幕宽度的一半.这样做效果很好,但是它会在拼贴之间添加分隔线(如屏幕截图所示).幸运的是,似乎在API 21中,现在支持GridLayout中的权重,为方便起见,这里引用了:

从API 21开始,GridLayout的多余空间分布适应了权重原则.如果未指定权重,则遵循先前的约定,并且如果列和行在其组中指定某种形式的对齐,则将列和行视为灵活的.因此,视图的灵活性受其对齐的影响,而对齐通常通过设置孩子的布局参数的重力属性来定义.如果沿给定轴定义了重量或对齐,则该组件在该方向上被视为柔性.如果没有设置重量或对齐,则假定组件不灵活.

同一行或列组中的多个组件被视为并行操作.只有当其中的所有组件都是灵活的时,这样的组才是灵活的.位于公共边界两侧的行和列组被认为是串行操作.如果其中一个元件是柔性的,则由这两个元件组成的复合材料组是柔性的.

要使柱伸展,请确保其中的所有组件都定义了重量或重力.要防止色谱柱拉伸,请确保色谱柱中的某个组分未定义重量或重力.

当灵活性原则不能提供完全消歧时,GridLayout的算法更倾向于靠近其右边和底边的行和列.更确切地说,GridLayout将其每个布局参数视为一组变量中的约束,这些变量定义了沿给定轴的网格线.在布局期间,GridLayout解决约束,以便将唯一解决方案返回到那些约束,其中所有变量都小于或等于任何其他有效解决方案中的相应值.

我将这个由GridLayout和2列组成的简单布局放在一起,尝试实现两个同等宽度的列:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:columnCount="2">
        <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />
        <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />
        <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />
        <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />
        <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" />
    </GridLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我认为,因为所有的孩子都有相同的柱重,所以会产生同样宽的柱子.然而,情况似乎并非如此,因为这是结果:

在此输入图像描述

第一列比第二列窄.这里有什么我想念的吗?我是否误解了GridLayout的重量如何?

作为另一个问题,我似乎不能用重量技巧做0宽度以确保相同的宽度而不管内容(TextView只是消失).如何使用GridLayout完成此操作?

user-interface android android-layout android-gridlayout android-5.0-lollipop

6
推荐指数
2
解决办法
5989
查看次数

如何在GridLayout中为低于21的API使用布局权重

我想使用平均传播8个按钮GridLayout.我想支持的API低于21(这是支持的最小数量layout_columnWeightlayout_rowWeightGridLayout)

这是我的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="tk.adamnafie.basicphrases.MainActivity"
android:background="@drawable/background">

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_column="0"
        android:layout_row="0"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button1"
        android:onClick="talk"
        android:text="Good Morning"
        android:layout_width="150dp" />

    <Button
        android:layout_column="1"
        android:layout_row="0"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button2"
        android:onClick="talk"
        android:text="Good Afternoon"
        android:layout_width="150dp" />

    <Button
        android:layout_column="0"
        android:layout_row="1"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button3"
        android:onClick="talk"
        android:text="Good night"
        android:layout_width="150dp" />

    <Button
        android:layout_column="1"
        android:layout_row="1"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button4"
        android:onClick="talk"
        android:text="How are you?"
        android:layout_width="150dp" />

    <Button
        android:layout_column="0"
        android:layout_row="2"
        android:layout_columnWeight="1" …
Run Code Online (Sandbox Code Playgroud)

user-interface android android-gridlayout android-support-library

6
推荐指数
1
解决办法
5266
查看次数

如何扩展行?

我正在尝试使用GridLayout,并且无法扩展行(使用TextViews)来"填充"布局中的空间.

垂直图片(注意红线是行应该展开的位置): 在此输入图像描述

水平图片:
在此输入图像描述

main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:columnCount="2"
  android:useDefaultMargins="true" >
<TextView
    style="@android:style/TextAppearance.Large"
    android:layout_columnSpan="2"
    android:layout_gravity="center_horizontal"
    android:padding="8dp"
    android:text="Which means: lacking in originality as to be obvious and boring." />
<Space android:layout_height="24dp" android:layout_columnSpan="2" />
<TextView style="@style/AnswerLetter" android:text="A." />
<TextView style="@style/AnswerChoice" android:text="ascetic" />
<TextView style="@style/AnswerLetter" android:text="B." />
<TextView style="@style/AnswerChoice" android:text="banal" />
<TextView style="@style/AnswerLetter" android:text="C." />
<TextView style="@style/AnswerChoice" android:text="contraption" />
<TextView style="@style/AnswerLetter" android:text="D." />
<TextView style="@style/AnswerChoice" android:text="dominion" />
<TextView style="@style/AnswerLetter" android:text="E." />
<TextView style="@style/AnswerChoice" android:text="enervation" />
</GridLayout>
Run Code Online (Sandbox Code Playgroud)

styles.xml:

 <style name="AnswerLetter" parent="@android:style/TextAppearance.Medium"> …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-gridlayout

5
推荐指数
1
解决办法
699
查看次数

Android:创建方形单元格表

我正在为 android 设计一个基本的井字游戏,作为我的“Hello World”项目。我想要一个 3x3 表格,其中所有单元格都是正方形。

如果其中的任何单元格中没有任何内容,我所做的方式会使列缩小。我正在尝试使用 GridLayout 中的 9 个 TextView。

我欢迎所有建议来做到这一点。

我的方式看起来像这样 - 在此处输入图片说明

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    style="@style/LayoutStyle"
    tools:context=".GameBoard">


    <GridLayout
        style="@style/GameBoardGrid"
        android:id="@+id/gridTitle">

        <TextView
            android:id="@+id/tile00"
            style="@style/GameTile"
            android:layout_column="0"
            android:layout_row="0"
            android:text=""/>

        <TextView
            android:id="@+id/tile01"
            style="@style/GameTile"
            android:layout_column="1"
            android:layout_row="0"
            android:text="X"/>

        <TextView
            android:id="@+id/tile02"
            style="@style/GameTile"
            android:layout_column="2"
            android:layout_row="0"
            android:text="O"/>

        <TextView
            android:id="@+id/tile10"
            style="@style/GameTile"
            android:layout_column="0"
            android:layout_row="1"
            android:text=""/>

        <TextView
            android:id="@+id/tile11"
            style="@style/GameTile"
            android:layout_column="1"
            android:layout_row="1"
            android:text="O"/>

        <TextView
            android:id="@+id/tile12"
            style="@style/GameTile"
            android:layout_column="2"
            android:layout_row="1"
            android:text="X"/>

        <TextView
            android:id="@+id/tile20"
            style="@style/GameTile"
            android:layout_column="0"
            android:layout_row="2"
            android:text=""/>

        <TextView
            android:id="@+id/tile21"
            style="@style/GameTile"
            android:layout_column="1"
            android:layout_row="2"
            android:text="X"/>

        <TextView
            android:id="@+id/tile22"
            style="@style/GameTile"
            android:layout_column="2"
            android:layout_row="2"
            android:text="O"/>

    </GridLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

其中,GameTile …

android textview android-ui android-tablelayout android-gridlayout

5
推荐指数
1
解决办法
3118
查看次数

使用GridLayout编辑屏幕外的文本

我有以下布局,其中编辑文本显然没有任何理由离开屏幕.我试图找到类似的问题,但我不能.它应该是一个简单的,但我已经尝试了许多没有运气的东西.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <GridLayout
        android:id="@+id/gridLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff"
        android:columnCount="2"
        android:orientation="horizontal" >

        <TextView
            android:id="@+id/titleTextView"
            android:layout_columnSpan="2"
            android:layout_gravity="left"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:paddingBottom="10dp"
            android:paddingTop="10dp"
            android:text="dsgsdgsd"
            android:textColor="@color/red"
            android:textStyle="bold" />

        <View
            android:layout_width="fill_parent"
            android:layout_height="2dip"
            android:layout_columnSpan="2"
            android:layout_gravity="left"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:background="@color/red" />

        <TextView
            android:id="@+id/textTitle"
            android:layout_gravity="left"
            android:background="#ffffff"
            android:paddingLeft="15dp"
            android:text="Title"
            android:textColor="@color/grey" />

        <EditText
            android:id="@+id/editTitle"
            android:layout_gravity="right"
            android:inputType="text">
        </EditText>

        <View
            android:layout_height="1dip"
            android:layout_columnSpan="2"
            android:layout_gravity="left"
            android:background="#E6E6E6" />

        <TextView
            android:id="@+id/textCategory"
            android:layout_gravity="left"
            android:background="#ffffff"
            android:gravity="left"
            android:paddingLeft="15dp"
            android:text="Category"
            android:textColor="@color/grey" />

        <EditText
            android:id="@+id/editCategory"
            android:layout_width="225dp"
            android:layout_gravity="right"
            android:inputType="text" />            

        <Button
            android:id="@+id/btnCreateAccount"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#ffffff"
            android:onClick="createExpense"
            android:text="Done"
            android:textColor="@color/red" /> …
Run Code Online (Sandbox Code Playgroud)

android textfield android-layout android-gridlayout

5
推荐指数
1
解决办法
3798
查看次数

EditText退出GridLayout

我正在尝试使用EditText和关联的标签创建视图.我将它们放在GridLayout中.EditText位于最后一列,文本似乎离开了屏幕.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="mobi.designmyapp.osmtemplate.note.NoteActivity"
android:orientation="vertical">

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:columnCount="2"
    android:rowCount="1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:labelFor="@+id/comment_edit_text"
        android:text="@string/comment_label"
        android:padding="8dp"
        android:textColor="@color/background_material_dark"
        android:maxLines="5"
        />

    <EditText
        android:id="@+id/comment_edit_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/comment_text_hint"/>

</GridLayout>
Run Code Online (Sandbox Code Playgroud)

android android-gridlayout

5
推荐指数
2
解决办法
1185
查看次数

GridLayout - 垂直/水平约束不一致

我发布此内容是因为我无法在 SO 和网络的其余部分上找到我正在寻找的确切内容。我看过这个,但我不太确定如何解决这个问题。

当我在应用程序中使用时,问题就出现了GridLayout,每当我旋转屏幕时,我都会看到如下输出:

在横向模式下:

06-23 21:41:25.627 10222-10222/in.cryf.yaca D/android.widget.GridLayout: vertical constraints: y1-y0>=112, y2-y1>=112, y3-y2>=112, y4-y3>=112, y4-y0<=311 are inconsistent; permanently removing: y4-y0<=311.
Run Code Online (Sandbox Code Playgroud)

在纵向模式下:

06-23 21:41:28.124 10222-10222/in.cryf.yaca D/android.widget.GridLayout: horizontal constraints: x1-x0>=192, x2-x1>=192, x3-x2>=192, x4-x3>=192, x4-x0<=704 are inconsistent; permanently removing: x4-x0<=704.
Run Code Online (Sandbox Code Playgroud)

虽然它不会影响我的应用程序的运行,但从我上面发布的 SO 链接来看,它似乎可能存在性能问题。

GridLayout我的 XML 中:

<GridLayout
        android:id="@+id/button_grid"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
</GridLayout>
Run Code Online (Sandbox Code Playgroud)

除此之外,我在创建应用程序时以编程方式将视图添加到布局中。

android android-gridlayout

5
推荐指数
1
解决办法
4002
查看次数

android gridlayout未显示在模拟器API 22中

我有一个应用程序在运行 API 23 的实际设备 Nexus 6P 和运行 API 24 的模拟 6P、5 和 4 上完全按需要运行,但GridLayout在运行 API 22 的模拟 Nexus 5 和 4 上显示出奇怪的行为。

该应用程序只有一个活动,其中包含多个RelativeLayout以编程方式设置的.VISIBLE& .INVISIBLE。在一个这样的RelativeLayout我有 2 GridLayouts 如下。模拟 API 22 时,底部GridLayout不显示,但顶部始终显示,与 API 22、23 或 24GridLayout无关。底部仅在我将模拟器设置更改为 API 24 时显示(未尝试 23)。为什么会这样?我认为我没有使用任何GridLayout需要 API 23 或更高版本的东西。此问题意味着我无法在运行 API 22 或 21 的 Nexus 5 上安装此应用程序。感谢您的任何建议。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/gameOperations"
    android:visibility="invisible">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/launchDisplay"
        android:gravity="center_horizontal">

        <TextView
            android:text="@string/app_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android android-emulator android-gridlayout android-relativelayout android-api-levels

5
推荐指数
1
解决办法
2661
查看次数