【问题标题】:GridLayout does not display properly, doesn't match previewGridLayout 无法正常显示,与预览不匹配
【发布时间】:2016-10-08 00:37:05
【问题描述】:

已提出此问题但未回答,因此我将添加另一个实例。原件在这里,这正是我的问题。这是 XML:

<?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="com.slidamusic.gridlayoutdemo.GridDemo">

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

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button"

        android:layout_row="0"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button1"

        android:layout_row="0"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button2"

        android:layout_row="1"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button3"

        android:layout_row="1"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button4"

        android:layout_row="2"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button5"

        android:layout_row="2"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button6"

        android:layout_row="3"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="0" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="fill"
        android:text="New Button"
        android:id="@+id/button7"

        android:layout_row="3"

        android:layout_rowWeight="1"
        android:layout_columnWeight="1"
        android:layout_column="1" />



</GridLayout>

这是一个非常简单的 8 个按钮布局,在预览中它们都完全对齐并且大小相同,分为 2 列和 4 行。当我在平板电脑上运行程序时,事情变得更加混乱,或多或少是这样的:

GridLayout does not expand elements evenly

我假设问题可能与 android:layout_gravity="fill" 有关,如预览所示。

【问题讨论】:

    标签: android-layout preview


    【解决方案1】:

    我发现了问题。这是因为与旧 API 缺乏兼容性。

    layout_rowWeight 和 layout_columnWeight 仅适用于 API 21 及更高版本。我的设备使用 API 17。这个问题可能有解决方案,但最好的办法是使用其他格式来实现相同的视觉效果,例如硬编码按钮的大小。

    我正在参加在线课程并完全遵循程序的构建,因此我对为什么这不起作用特别感兴趣。我将 Android Studio 上的预览设置为 API 23。将其设置为适合我的测试设备的 API 可以准确地向我展示程序的外观。如果有人看到这一点并且知道如何在较低的 API 中使用这些属性,我会有兴趣学习如何做到这一点。

    Android Studio 本身有一个关于使用这些属性的警告,我终于注意到了。可以节省大量时间!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      相关资源
      最近更新 更多