我正在尝试创建一个包含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 >
答案 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>
看起来像这样。
修改强>
如果你想要两列,然后能够在你想要的行中添加许多文本视图(或任何其他布局),那么你可以将布局分成两个这样的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);