我想知道是否有办法根据子视图宽度设置GridLayout的列数,就像GridView在设置auto_fit时一样。
这是我对MainActivity的xml代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.hannahkwon.bluetooth1.MainActivity">
<include
android:id="@+id/toolBar"
layout="@layout/toolbar">
</include>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Bluetooth is off"
android:id="@+id/txt_BtStatus"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider"/>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="1dp"
android:id="@+id/gridLayout_Channels"
android:columnCount="7">
<CheckBox
android:text="Channel 1"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS1"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 2"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS2"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 3"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS3"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 4"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS4"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 5"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS5"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 6"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS6"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 7"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS7"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
<CheckBox
android:text="Channel 8"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:id="@+id/checkBox_DS8"
android:textSize="16sp"
android:paddingRight="8dp"
android:paddingLeft="8dp" />
</GridLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/divider"/>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true">
<EditText
android:id="@+id/editTxt_Minute"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:inputType="number"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingBottom="16dp"
android:paddingLeft="8dp"
android:paddingRight="8dp"
android:paddingTop="16dp"
android:text=":"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editTxt_Second"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:paddingRight="8dp"
android:inputType="number"/>
<Button
android:id="@+id/btn_Start"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_gravity="center_vertical"
android:layout_marginBottom="6dp"
android:layout_marginTop="6dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Start"
android:textSize="12sp" />
<Button
android:id="@+id/btn_Cancel"
android:layout_width="wrap_content"
android:layout_height="36dp"
android:layout_gravity="center_vertical"
android:layout_marginBottom="6dp"
android:layout_marginTop="6dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="Cancel"
android:textSize="12sp" />
</LinearLayout>
</RelativeLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<fragment
android:id="@+id/graph_1"
android:name="com.example.hannahkwon.bluetooth1.GraphFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:tag="Fragment1" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
基本上,我想要这个
是这个
答案 0 :(得分:1)
您可以使用Google的FlexBoxLayout,并将flexWrap设置为“wrap”: https://github.com/google/flexbox-layout
README应该为您提供实现它所需的所有信息(从未尝试过,但它看起来简单而有力)