Android GridLayout 怎么让4个TextView均匀填充布局界面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android GridLayout 怎么让4个TextView均匀填充布局界面相关的知识,希望对你有一定的参考价值。

跟台技术员商量添加字段 判断种数据类型 用同布局文件适配返数据返数据真没规律考虑自态控件往布局添加控制
GridLayout grid = ...;
TextView tv = new TextView(context)
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.xxx = xxx;
params.xxx = xxx;
tv.setLayoutParams(params);
grid.addView(tv);
大致如上,我想你应该看的明白,其实代码中控制很麻烦的,最好是定义个layout文件,包含了GridLayout中的子视图的布局,需要的时候直接Inflater
参考技术A android中,可以设置GridLayout 的排列方式,以下为设置代码:
1.layout 布局文件中设置固定的高度
android:layout_height = "20dp"

2.继承GridView,重写onMeasure方法
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
参考技术B 调整好列宽

GridLayout 中 TextView 的动态高度

【中文标题】GridLayout 中 TextView 的动态高度【英文标题】:Dynamic height of TextView within a GridLayout 【发布时间】:2012-08-27 17:23:54 【问题描述】:

我在使用 GridLayout 使用库兼容性时遇到问题(没有尝试过)。我使用的是app:layout_gravity="fill_horizontal" 而不是android:layout_gravity="fill_horizontal",但是TextView 中的所有内容都没有显示出来。为了显示所有内容,我必须设置TextView“标题”的高度,但我想要一个动态高度,而不是设定高度。

有什么想法吗?

【问题讨论】:

【参考方案1】:

您必须为 TextView 设置 layout_width="0dp"layout_gravity="fill_horizontal"

<TextView
    android:layout_
    android:layout_gravity="fill_horizontal" />

请在此处查看完整示例:https://groups.google.com/d/msg/android-developers/OmH3VBwesOQ/ZOGR0SGvC3cJ 或此处:http://daniel-codes.blogspot.com/2012/01/gridlayout-view-clipping-issues.html

【讨论】:

注意 **app:**layout_gravity 很重要。我正在设置样式中的值,但它 lint 并没有警告我,我花了一段时间才弄清楚问题。 如果位于第二行则取上一行的宽度【参考方案2】:

GridLayout 中使用TextView 是有问题的,但是一种同时使用两者的好方法。

这是示例布局的样子:

这是完整的布局xml,重要的行用***标记。

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:columnCount="3"              *   this example uses 3 columns
    android:orientation="horizontal" >   *** use "horizontal"

<TextView                                *   just a normal view
    android:layout_column="0"
    android:layout_row="0"
    android:background="#666666"
    android:text="A"
    android:textColor="#afafaf"
    android:textSize="60sp"
    android:textStyle="bold" />

<TextView                                *   this text will not be cut!
    android:layout_           *** important: set width to 0dp
    android:layout_
    android:layout_column="1"
    android:layout_columnSpan="2"        *   colspan does also work with this
    android:layout_gravity="fill_horizontal|bottom"        *** set to "fill*"!
    android:layout_row="0"
    android:text="This view has 2 columns. Lorem ipsum dolor sit amet, consetetur sadipscing elitr."
    android:textColor="#666666" />

</GridLayout>

根据您的需要,这种组合也可以使用:

    android:layout_
    android:layout_
    android:layout_gravity="fill"
    android:gravity="bottom"

请注意,您不必使用除 android 之外的任何命名空间即可。

【讨论】:

谢谢,它有效。但我很好奇你是怎么发现这个把戏的? (layout_width 为 0dp,layout_gravity 为填充属性) 很好地发现了这一点。很难让我的 TextView 在我的 GridLayout 中正确包装文本。遵循有关同一问题的许多主题的所有其他建议和答案,但只有您的有效。非常感谢! :)

以上是关于Android GridLayout 怎么让4个TextView均匀填充布局界面的主要内容,如果未能解决你的问题,请参考以下文章

请教:android gridlayout 如何设置列宽和行高?

QGridLayout里添加这一个QPushButton怎么让其占两行

Android之GridLayout网格布局

android gridlayout用法

android gridlayout 怎么能使每一个格能均等分割屏幕

Intent GridLayout到4个活动