【问题标题】:How to use layout weight in GridLayout for APIs lower than 21如何在 GridLayout 中为低于 21 的 API 使用布局权重
【发布时间】:2016-04-14 03:52:40
【问题描述】:

我想使用GridLayout 均匀分布 8 个按钮。我想支持低于 21 的 API(这是在 GridLayout 中支持 layout_columnWeightlayout_rowWeight 的最小数量)

这是我的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="tk.adamnafie.basicphrases.MainActivity"
android:background="@drawable/background">

<GridLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_column="0"
        android:layout_row="0"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button1"
        android:onClick="talk"
        android:text="Good Morning"
        android:layout_width="150dp" />

    <Button
        android:layout_column="1"
        android:layout_row="0"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button2"
        android:onClick="talk"
        android:text="Good Afternoon"
        android:layout_width="150dp" />

    <Button
        android:layout_column="0"
        android:layout_row="1"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button3"
        android:onClick="talk"
        android:text="Good night"
        android:layout_width="150dp" />

    <Button
        android:layout_column="1"
        android:layout_row="1"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button4"
        android:onClick="talk"
        android:text="How are you?"
        android:layout_width="150dp" />

    <Button
        android:layout_column="0"
        android:layout_row="2"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button5"
        android:onClick="talk"
        android:layout_width="150dp"
        android:text="Can you talk English?" />

    <Button
        android:layout_column="1"
        android:layout_row="2"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button6"
        android:onClick="talk"
        android:layout_width="150dp"
        android:text="I am learning German" />

    <Button
        android:layout_column="0"
        android:layout_row="3"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button7"
        android:onClick="talk"
        android:layout_width="150dp"
        android:text="Where do you live?" />

    <Button
        android:layout_column="1"
        android:layout_row="3"
        android:layout_columnWeight="1"
        android:layout_rowWeight="1"
        android:layout_gravity="fill"
        android:id="@+id/button8"
        android:onClick="talk"
        android:layout_width="150dp"
        android:text="I come from Egypt" />

    </GridLayout>
</RelativeLayout>

我想支持 Android 4.0 作为最低 SDK。有什么简单的方法吗?

【问题讨论】:

    标签: android user-interface android-support-library android-gridlayout


    【解决方案1】:

    您可以使用 GridView 的支持库版本,它将功能向后移植到早期的 Android 版本。在您的 build.gradle(模块)中,您需要以下依赖项:

    compile "com.android.support:support-v4:23.1.1"
    compile "com.android.support:gridlayout-v7:23.1.1"
    

    然后在你使用的 xml 布局文件中:

    <android.support.v7.widget.GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <Button
            app:layout_column="0"
            app:layout_row="0"
            app:layout_columnWeight="1"
            app:layout_rowWeight="1"
            app:layout_gravity="fill"
            android:id="@+id/button1"
            android:onClick="talk"
            android:text="Good Morning"
            android:layout_width="150dp" />
    

    您还需要将应用命名空间添加到包含布局中

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout 
        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"
    

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 1970-01-01
      • 2018-12-09
      • 2017-12-07
      • 1970-01-01
      • 2018-04-16
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      相关资源
      最近更新 更多