我想要一个简单的设置,其中我有一个包含2列的布局,并且在每个列中,我将嵌套其他布局和控件。作为我的根布局,我使用GridLayout
,到目前为止一切顺利:
当我将ListView
添加到我的第一个主列时,它忽略了第一列的限制。我已经尝试过我所知道的每一件事,甚至将ListView
嵌套在其他布局中,但我总是这样做:
到目前为止,这是我布局的xml:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="2"
tools:context="com.example.mycoffeeshops.MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_column="0"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/cofeeShopsTitleLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:width="0dp"
android:gravity="center_horizontal"
android:text="@string/coffee_shops_title"
android:textSize="@dimen/coffee_shops_title"
android:textStyle="bold" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:columnCount="3">
<TextView
android:id="@+id/shopLabelLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnWeight="1"
android:width="0dp"
android:text="@string/shop_label" />
<EditText
android:id="@+id/shopLabelEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_columnWeight="3"
android:width="0dp"
android:ems="10"
android:hint="@string/shop_label_hint"
android:inputType="textPersonName" />
<ImageButton
android:id="@+id/saveCoffeeShopImageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
app:srcCompat="@android:drawable/ic_menu_save" />
</GridLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:columnCount="3">
<TextView
android:id="@+id/descriptionLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnWeight="1"
android:width="0dp"
android:text="@string/shop_label" />
<EditText
android:id="@+id/descriptionEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_columnWeight="3"
android:width="0dp"
android:ems="10"
android:hint="@string/description_hint"
android:inputType="textPersonName" />
<Space
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
android:layout_columnWeight="0.5" />
</GridLayout>
<TextView
android:id="@+id/coffeeShopListLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:width="0dp"
android:gravity="center_horizontal"
android:paddingBottom="@dimen/coffee_shop_list_label_padding_bottom"
android:paddingTop="@dimen/coffee_shop_list_label_padding_top"
android:text="@string/coffee_shops_list_label"
android:textSize="@dimen/coffee_shops_list_label_text_size"
android:textStyle="bold" />
<ListView
android:id="@+id/shopListListView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_column="1"
android:layout_columnWeight="1"
android:orientation="vertical">
<TextView
android:id="@+id/detailedIformationTitleLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:width="0dp"
android:gravity="center_horizontal"
android:text="@string/detailed_information_title"
android:textSize="@dimen/coffee_shops_title" />
</LinearLayout>
答案 0 :(得分:2)
这是您想要的代码。这跟我工作很好
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:weightSum="100"
tools:context="com.example.mycoffeeshops.MainActivity">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="50"
android:orientation="vertical">
<Space
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/cofeeShopsTitleLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:width="0dp"
android:gravity="center_horizontal"
android:text="@string/coffee_shops_title"
android:textSize="@dimen/coffee_shops_title"
android:textStyle="bold" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:columnCount="3">
<TextView
android:id="@+id/shopLabelLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnWeight="1"
android:width="0dp"
android:text="@string/shop_label" />
<EditText
android:id="@+id/shopLabelEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_columnWeight="3"
android:width="0dp"
android:ems="10"
android:hint="@string/shop_label_hint"
android:inputType="textPersonName" />
<ImageButton
android:id="@+id/saveCoffeeShopImageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="2"
app:srcCompat="@android:drawable/ic_menu_save" />
</GridLayout>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:columnCount="3">
<TextView
android:id="@+id/descriptionLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_columnWeight="1"
android:width="0dp"
android:text="@string/shop_label" />
<EditText
android:id="@+id/descriptionEditText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_columnWeight="3"
android:width="0dp"
android:ems="10"
android:hint="@string/description_hint"
android:inputType="textPersonName" />
</GridLayout>
<TextView
android:id="@+id/coffeeShopListLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0"
android:width="0dp"
android:gravity="center_horizontal"
android:paddingBottom="@dimen/coffee_shop_list_label_padding_bottom"
android:paddingTop="@dimen/coffee_shop_list_label_padding_top"
android:text="@string/coffee_shops_list_label"
android:textSize="@dimen/coffee_shops_list_label_text_size"
android:textStyle="bold" />
<ListView
android:id="@+id/shopListListView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="50"
android:orientation="vertical">
<TextView
android:id="@+id/detailedIformationTitleLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:width="0dp"
android:gravity="center_horizontal"
android:text="@string/detailed_information_title"
android:textSize="@dimen/coffee_shops_title" />
</LinearLayout>
</LinearLayout>
但尝试使用ConstraintLayout。通过ConstraintLayout,您可以轻松实现这种类型的布局。
教程: - https://developer.android.com/training/constraint-layout/index.html