Articles of android gridlayout

如何以编程方式添加GridLayout子项的layout_columnWeight?

我想使用GridLayout (不是GridView )作为象棋或棋子等游戏的棋盘。 由于我有点不愿意使用带有64个子View的xml文件,我尝试以编程方式添加它们。 为了简单TextView ,我开始使用TextView作为GridLayout子View 。 我的问题是View不是均匀分布的,而且我不知道如何在我的java代码中获得均匀分布。 设置layout_columnWeight和layout_rowWeight没有类似“setWeight()”的方法。 目前,这是我的activity_dynamic_grid_layout.xml : 我在这里将GridLayout宽度和高度设置为match_parent ,但我在运行时使用ViewTreeObserver.OnPreDrawListener更改它们以获得方板。 这样,彩色背景显示正方形空间。 我的onCreate() @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dynamic_grid_layout); GridLayout gl = (GridLayout) findViewById(R.id.grid_layout); gl.setColumnCount(8); gl.setRowCount(8); for(int i=0; i<gl.getRowCount(); i++) { GridLayout.Spec rowSpec = GridLayout.spec(i, 1, GridLayout.FILL); for(int j=0;j<gl.getColumnCount();j++) { GridLayout.Spec colSpec = GridLayout.spec(j,1, GridLayout.FILL); TextView tvChild = new TextView(this); tvChild.setText("[ […]

将具有xml布局的片段动态添加到GridLayout是不可行的

在我们的应用程序中,我们尝试动态地将片段添加到GridLayout。 空格网布局在XML中定义,片段的布局也是如此。 在运行时,我们检查一些数据,然后从中确定要添加到布局的片段数以及每个片段使用的布局。 当我们让片段为其生成的视图分配大小时,它都可以工作,但是如果我们在布局文件中指定片段的大小,则网格布局中不会显示任何内容。 显然我们可以在创建视图时简单地指定大小,但我们更愿意在片段的xml布局中进行,因为这样我们可以利用Android的内置系统为每个设备选择正确的布局。 我正在使用支持库片段。 我没有使用支持库GridLayout,如果这有所作为 相关代码和xml如下: GridLayout XML: 片段XML的示例 片段onCreateView()方法 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view; GridLayout.Spec rowSpec = GridLayout.spec(mRowStart, mRowSpan); GridLayout.Spec columnSpec; GridLayout.LayoutParams childParams; if (large) {; view = inflater.inflate(R.layout.my_place_large, container, false); columnSpec = GridLayout.spec(mColumnStart, 2); childParams = new GridLayout.LayoutParams(rowSpec, columnSpec); //childParams.width = […]

将视图动态添加到GridLayout时,对齐方式不对

当用XML添加按钮时 – 一切都很好 动态添加按钮时(按代码) – 缺少对齐,按钮不占用列的完整宽度 GridLayout gl = (GridLayout) findViewById(R.id.social_gl_content); LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); for (int i = 0 ; i < strs.length ; i++) { View v = inflater.inflate(R.layout.grid_item, null); Button b = (Button) v.findViewById(R.id.button); b.setText(strs[i]); if ( i % 2 ==0) { b.setBackgroundColor(Color.BLACK); }else{ b.setBackgroundColor(Color.BLUE); } gl.addView(v); }

使用GridLayoutManager的RecyclerView

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

Android:GridLayout大小和View.GONE行为

我想创建一个GridLayout ,当其中一个孩子的Visibility设置为GONE ,它将被下一个孩子取代。 这不是我自己想要更好地解释的任务。 我可以按照列数和宽度以及所有方式使布局工作。 只是GridLayout的默认GONE行为使得孩子只是消失而不是被替换,就好像它不在那里一样,就像其他布局一样。 我确实尝试了很多东西,我尝试搜索SO和谷歌,但我似乎无法解决这个问题。 这对于我正在处理的应用程序来说是最方便的布局。无论如何都要在布局中执行此操作而不必以编程方式执行此操作?或者两者的组合?

GridLayout列超出了它的范围

我正在尝试制作类似网格的forms,类似于官方Android开发者博客上的示例。 这是我的布局: 我的左栏(静态文本,右对齐)工作正常。 它将文本对齐,宽度取决于最宽的行。 但是,右列似乎超出了GridLayout的范围。 在该图片中,蓝色框是GridLayout的边界。 您已经可以在顶部的绿色栏中看到问题。 右侧应该停在GridLayout的边界(就像左侧一样),但由于某种原因它会超越它。 该图片中的蓝色框是EditText的边界(它设置为wrap_content)。 然而,浅绿色的盒子是允许它扩展的界限。 当我在EditText中输入大量字符时,它会经过GridLayout的边界,甚至超过手机屏幕的边缘! 这是GridLayout中的错误吗? 或者我错过了什么?

哪个LayoutManager用于2048游戏的animation?

出于培训目的,我目前正在复制2048游戏。 我完成了逻辑和交互,但是在单个TextView打印(并简单地刷新)它当然看起来很荒谬。 在考虑如何为游戏构建UI时,我不确定选择哪个LayoutManager 。 我需要在游戏的4 x 4网格中做的是合并并在animation中添加行和列内的单元格 。 在我看来,这: GridLayout无法工作,因为当我需要能够处理单行和列时,它处理完整数据集(四行/列中的16个图块)。 但是,我不确定这一点。 我之前使用过GridLayout ,但从未操纵过多少项(添加,删除),也从未使用过那种操作的animation。 有没有办法操纵单行和列? LinearLayout不起作用,因为当我想操纵列时出现问题,但有四个水平LinearLayout或行,但有四个垂直LinearLayout 。 RelativeLayout或ConstraintLayout是可能的 – 也许。 这里的麻烦似乎是我必须跟踪我的16个视图, TextView可能,并以编程方式构建完整的布局,以便我可以告诉animation该做什么。 当然可行,但具有挑战性。 CustomLayout是一个选择,但我应该在哪个超类上构建它以及为什么? 我错过了简单的解决方案吗? 如果没有,那么对于我的数据结构来说,最“自然”的LayoutManager是什么(目前它是一个包含16个整数的数组,但可以很容易地改为4 x 4整数数组)。

Android:项目之间的GridLayout间距

我有一个充满按钮的网格布局,现在我希望按钮彼此更远,我应该写什么代码? 我试图搜索它,但只find了GridView的解决方案,而不是GridLayout。

GridLayout中的微调器

将Spinner添加到GridLayout似乎“打破”了布局。 我准备了一个最小的工作示例来说明问题: 我想要一个左边是标签的网格,右边是输入控件。 右边的控件应占用剩余空间。 这是一个简单的例子: 用旋转器替换其中一个输入控件会导致右列延伸到屏幕边界之外 ,从而导致布局难看。 为什么会发生这种情况,我该如何避免呢? 这是第一个例子的代码: 这是第二张图片的代码。 唯一的区别是第一个EditText已被Spinner取代:

扩展GridLayout

使用GridLayout,这是一个有效的布局定义。 没有关于’layout_height’ attribute should be defined或者’layout_height’ attribute should be defined警告 另一方面,如果我扩展GridLayout,等效布局会同时给出警告’layout_height’ attribute should be defined ‘layout_width’ attribute should be defined 这就是扩展的gridlayout的样子 package com.github.extendedgridlayout; import android.annotation.TargetApi; import android.content.Context; import android.os.Build; import android.util.AttributeSet; import android.widget.GridLayout; @SuppressWarnings(“unused”) public class ExtendedGridLayout extends GridLayout { public ExtendedGridLayout(Context context){ super(context); } public ExtendedGridLayout(Context context, AttributeSet attrs) { super(context, attrs); } public […]