Articles of android gridlayout

使用xml布局dynamic添加片段到GridLayout是不行的

在我们的应用程序中,我们试图dynamic添加片段到GridLayout。 XML格式的空网格布局与片段的布局一样。 在运行时,我们检查一些数据,并从中确定要添加到布局的片段数量以及每个片段使用哪个布局。 当我们有片段为其生成的视图分配一个大小的时候,它是全部工作的,但是如果我们在片段的布局文件中指定了大小,则在网格布局中什么都不显示。 显然,我们可以在创build视图时简单地指定大小,但是我们更愿意在碎片的xml布局中进行,因为这样可以让我们利用Android的内置系统为每个设备select正确的布局。 我正在使用支持库碎片。 如果这有所作为,我不使用支持库GridLayout 相关的代码和XML如下: GridLayout XML: <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android"> <ScrollView android:id="@+id/grid_scroll" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/bottom_fragment" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginRight="8dp" android:layout_marginTop="?android:attr/actionBarSize" android:overScrollMode="ifContentScrolls" > <GridLayout android:id="@+id/grid" android:layout_width="match_parent" android:layout_height="wrap_content" android:alignmentMode="alignMargins" android:animateLayoutChanges="true" android:columnCount="3" android:columnOrderPreserved="true" android:orientation="horizontal" android:overScrollMode="ifContentScrolls" android:rowOrderPreserved="true" > </GridLayout> </ScrollView> </merge> 片段XML的一个例子 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dp" android:layout_height="100dp" android:alpha="1" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="match_parent" […]

将视图dynamic添加到GridLayout时,alignment方式不正确

当通过XML添加button – 一切都好 <GridLayout android:id="@+id/social_gl_content" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:alignmentMode="alignBounds" android:columnCount="2" android:padding="8dp"> <LinearLayout android:layout_width="0dp" android:layout_height="45dp" android:layout_columnWeight="1"> <Button android:layout_width="fill_parent" android:layout_height="45dp" android:background="@android:color/holo_blue_light" android:text="Hi"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="45dp" android:layout_columnWeight="1"> <Button android:layout_width="fill_parent" android:layout_height="45dp" android:background="@android:color/holo_green_light" android:text="Whatsapp"/> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="45dp" android:layout_columnWeight="1"> <Button android:layout_width="match_parent" android:layout_height="45dp" android:background="@android:color/holo_green_light" android:text="This is facebook" /> </LinearLayout> <LinearLayout android:layout_width="0dp" android:layout_height="45dp" android:layout_columnWeight="1"> <Button android:layout_width="match_parent" android:layout_height="45dp" android:background="@android:color/holo_blue_light" android:text="On" /> </LinearLayout> […]

RecyclerView与GridLayoutManager

装饰RecyclerView具有这种外观和感觉的最好和最简单的方法是什么? 我正在开发一个旅行座位预订应用程序…我知道我可以做与gridlayout经理recyclerview ..但应该是什么步骤我不知道一件事要注意每个巴士有不同的座位安排

Android:GridLayout项目之间的间距

我有一个充满了button的网格布局,现在我想要button更远离彼此,我应该写什么代码? 我试图search它,但只发现了GridView的解决scheme,而不是GridLayout。

GridLayout列超出了它的界限

我正在尝试制作一个网格状的表单,类似于官方Android Developers博客上的例子。 这是我的布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="48dp" android:layout_marginRight="48dp" android:layout_marginTop="@dimen/activity_vertical_margin" android:columnCount="2" android:rowCount="2"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="0" android:layout_gravity="end" android:layout_row="0" android:text="Send" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> <Spinner android:id="@+id/send_currency" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_row="0" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="0" android:layout_gravity="end" android:layout_row="1" android:text="to" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_column="1" android:layout_row="1" android:hint="username" android:textColor="?android:attr/textColorPrimary" android:textSize="24sp" /> […]

GridLayout(不是GridView) – 单元格之间的空格

我使用GridLayout (支持)在我的应用程序中显示ImageView 。 有3列5行。 问题是GridLayout中的单元格会自动获得它们之间的空间。 我没有设置填充或单元格的边距。 请参考下面的图片。 所有单元格dynamic添加,这里是我如何添加这些单元格。 获得屏幕宽度和高度: Point size = new Point(); getWindowManager().getDefaultDisplay().getSize(size); screenWidth = size.x; screenHeight = size.y; rowHeight = (int) (screenHeight * 0.2); 将视图添加到GridLayout: GridLayout.LayoutParams params = new GridLayout.LayoutParams( getSpec(rowColumn[0]), getSpec(rowColumn[1])); params.height = rowHeight; if (rowColumn[1].equalsIgnoreCase("col_full")) { params.width = (int) (screenWidth); } else if (rowColumn[1].equalsIgnoreCase("col_two_part")) { params.width = (int) (screenWidth * […]

2048游戏animation的LayoutManager?

为了训练目的,我目前正在复制2048年的游戏。 我已经完成了逻辑和交互,但是在单个TextView打印(并且简单地刷新)它当然是荒谬的。 在考虑如何为游戏构buildUI时,我不确定要select哪个LayoutManager 。 在游戏的4×4网格中我需要做的是在行和列中用animation合并和添加单元格 。 在我看来,这: 当我需要处理单个行和列时, GridLayout将无法工作,因为它正在处理完整的数据集(四行中的16个图块)。 但是,我不确定这一点。 我以前曾经使用过GridLayout ,但从来没有操纵过项目的数量(添加,删除),从来没有使用该操作的animation。 有没有办法操纵单个行和列? LinearLayout将不起作用,因为当我想操纵列时遇到麻烦,但有四个水平LinearLayout或行,但有四个垂直LinearLayout 。 RelativeLayout或ConstraintLayout将是可能的 – 也许。 这里的麻烦似乎是我必须跟踪我的16个视图,可能TextView ,并以编程方式构造完整的布局,所以我可以告诉animation做什么。 当然可行,但具有挑战性。 CustomLayout是一个select,但我应该build立它的超类,为什么? 我错过了简单的解决scheme吗? 如果不是,我的数据结构(它目前是一个16个整数的数组,但可以很容易地改变成一个4×4的整数数组)的最“自然”的LayoutManager是什么。

Spinner在GridLayout中

添加一个微调到一个GridLayout似乎“打破”的布局。 我已经准备了一个最小的工作例子来说明这个问题: 我想要一个左边有标签的网格,右边是input控件。 右侧的控件应占用剩余的空间。 这是一个简单的例子: 使用微调代替其中一个input控件会导致右列伸出屏幕边界 ,导致难看的布局。 为什么会发生这种情况,我该如何避免呢? 以下是第一个例子的代码: <?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" > <TextView android:layout_gravity="left" android:text="TextView" /> <EditText android:layout_gravity="fill_horizontal" android:hint="EditText" /> <TextView android:layout_gravity="left" android:text="TextView" /> <EditText android:layout_gravity="fill_horizontal" android:hint="EditText" /> </GridLayout> 这是第二张图片的代码 唯一的区别是第一个EditText被一个Spinner所取代: <?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" > <TextView android:layout_gravity="left" android:text="TextView" /> <Spinner android:id="@+id/spinner1" android:layout_gravity="fill_horizontal" /> <TextView […]

dynamic更改GridLayoutManager的列数

我实际上是在我的应用程序中使用两列的GridLayoutManager,我希望有一列取决于使用的视图types。 这里是我的片段的方法“onCreateView()”中的代码: // Recycler view for users usersList = (RecyclerView) mView.findViewById(R.id.usersList); // Layout manager (grid of users layoutManager = new GridLayoutManager(mContext, 2); usersList.setLayoutManager(layoutManager); // ArrayList of users users = new ArrayList<User>(); // Set the adapter for the list of users mHomeListAdapter = new HomeListAdapter(getActivity(), users); usersList.setAdapter(mHomeListAdapter); 然后,在我的适配器中,我有这样的代码: @Override public int getItemViewType(int position) { if (position […]

Android GridLayout中心horizo​​ntaly

我正在试图创build一个2列的GridLayout将被居中。 我的devise是: <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" custom:rowCount="4" custom:columnCount="2" android:orientation="horizontal"> <TimeTableKeeper.Tile android:layout_width="75dp" android:layout_height="75dp" android:gravity="top|left" android:background="#00FF00" custom:color="green" custom:layout_row="0" custom:layout_column="0" /> <TimeTableKeeper.Tile android:layout_width="75dp" android:gravity="top|left" android:layout_height="75dp" android:background="#00FF00" custom:color="blue" custom:layout_row="0" custom:layout_column="1" /> </GridLayout> 它看起来像: 我想要在中心有这个button,并完全与他们之间的间距。 可能吗? – 编辑: 我也试过把它放到LinearLayout中,没有结果: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <GridLayout xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" custom:rowCount="4" custom:columnCount="2" android:orientation="horizontal" android:gravity="center" android:layout_gravity="center"> <TimeTableKeeper.Tile android:layout_width="75dp" […]