如何在GridLayout的边界内拟合视图?

时间:2017-03-27 02:33:48

标签: android android-layout android-studio android-gridlayout android-layout-weight

我正在尝试在GridLayout中放置一个4x6网格的按钮,但有些按钮被放置在布局的边界之外,并且不知道如何修复它。基本上我希望缩小所有按钮视图以适应网格布局。enter image description here

   <GridLayout
        android:id="@+id/grid_buttons"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:columnCount="6"
        android:rowCount="4">

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_row="0"
            android:text="@string/button_1"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="0"
            android:text="@string/button_2"/>

        <Button
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_row="0"
            android:text="@string/button_3"/>

        <Button
            android:layout_weight="1"
            android:layout_column="0"
            android:layout_row="1"
            android:text="@string/button_4"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="1"
            android:text="@string/button_5"/>

        <Button
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_row="1"
            android:text="@string/button_6"/>

        <Button
            android:layout_weight="1"
            android:layout_column="0"
            android:layout_row="2"
            android:text="@string/button_7"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="2"
            android:text="@string/button_8"/>

        <Button
            android:layout_weight="1"
            android:layout_column="2"
            android:layout_row="2"
            android:text="@string/button_9"/>

        <Button
            android:layout_weight="1"
            android:layout_column="1"
            android:layout_row="3"
            android:text="@string/button_0"/>

        <Button
            android:layout_weight="1"
            android:layout_column="3"
            android:layout_row="0"
            android:text="@string/button_A"/>

        <Button
            android:layout_weight="1"
            android:layout_column="4"
            android:layout_row="0"
            android:text="@string/button_B"/>

        <Button
            android:layout_weight="1"
            android:layout_column="5"
            android:layout_row="0"
            android:text="@string/button_C"/>

        <Button
            android:layout_weight="1"
            android:layout_column="3"
            android:layout_row="1"
            android:text="@string/button_D"/>

        <Button
            android:layout_weight="1"
            android:layout_column="4"
            android:layout_row="1"
            android:text="@string/button_E"/>

        <Button
            android:layout_weight="1"
            android:layout_column="5"
            android:layout_row="1"
            android:text="@string/button_F"/>

    </GridLayout>

1 个答案:

答案 0 :(得分:2)

使用多个GridLayout XML属性LinearLayoutandroid:layout_weight,您可以轻松实现所需结果,而不是android:weightSum

这是您的4*6网格。只需根据需要更改按钮文本。

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

<!-- First Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="1"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="2"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="3"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="4"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="5"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="6"/>

</LinearLayout>

<!-- Second Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="7"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="8"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="9"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="10"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="11"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="12"/>

</LinearLayout>

<!-- Third Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="13"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="14"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="15"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="16"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="17"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="18"/>

</LinearLayout>

<!-- Fourth Row -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:orientation="horizontal"
    android:layout_weight="1"
    android:weightSum="6">

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="19"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="20"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="21"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="22"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="23"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:text="24"/>

</LinearLayout>

希望这会对你有帮助〜

enter image description here