Android GridLayout单个孩子在使用columnCount时不考虑体重

时间:2016-01-28 21:38:56

标签: android android-layout android-gridlayout

我正在尝试创建一个包含2列和无限行(以编程方式添加)的网格,其中2个以上的子项完美运行,孩子们通常采用半宽,但是当我添加一个孩子时,它不会占用半个宽度,而是填充父母..

重要说明:内容是动态的,可以包含单个元素或N,因此需要使用单个元素和多个元素

这就是我所拥有的:

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.GridLayout 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:orientation="horizontal"
    app:columnCount="2">

    <TextView
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        app:layout_columnWeight="1"
        android:text="This is a text that need to have width as 50% screen size "/>
</android.support.v7.widget.GridLayout >

这是上面代码的结果: enter image description here

当我添加一个具有与上面相同属性的新TextView时: enter image description here

这是我希望添加单个textview的结果: enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用权重并在LinearLayout中执行此操作。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent" android:layout_weight="2">

    <TextView
        android:id="@+id/leftView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:text="This is a text that needs to have width as 50% of screen size"
        android:layout_weight="1"/>

   <TextView
        android:id="@+id/rightView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"/>

</LinearLayout>

看起来像这样。

enter image description here

修改

如果你想要两列,然后能够在你想要的行中添加许多文本视图(或任何其他布局),那么你可以将布局分成两个这样的LinearLayouts。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="match_parent"
    android:layout_height="match_parent" android:layout_weight="2">

  <LinearLayout
      android:id="@+id/leftLayout"
      android:orientation="vertical"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"/>

  <LinearLayout
      android:id="@+id/rightLayout"
      android:orientation="vertical"
      android:layout_width="0dp"
      android:layout_height="match_parent"
      android:layout_weight="1"/>

</LinearLayout>

要将文本视图添加到列,您可以通过编程方式执行此操作。

leftView = (LinearLayout)findViewById(R.id.leftView);
TextView textView = new TextView(getApplicationContext());

textView.setText("testDynamic textView");
leftView.addView(textView);