这个问题已经被提出但没有回答,所以我将添加另一个实例。原来就在这里,这正是我的问题。这是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”,因为当我删除此行时按钮的大小正常并且它们排列得很好,但是它们并没有像我希望的那样填满屏幕,并在预览中显示。
答案 0 :(得分:1)
我发现了这个问题。这与缺乏与旧API的兼容性。
layout_rowWeight和layout_columnWeight仅适用于API 21及更高版本。我的设备使用API 17.可能有这个问题的解决方案,但最好的想法是使用其他类型的格式来实现相同的视觉效果,例如硬编码按钮的大小。
我正在参加一个在线课程并完全遵循程序的构建,因此我特别感兴趣的是为什么这不起作用。我将Android Studio上的预览设置为API 23.将其设置为我的测试设备的相应API,可以准确地向我展示程序的外观。如果有人看到这个并且知道如何在较低的API中使用这些属性,我会有兴趣学习如何做到这一点。
Android Studio本身有关于使用这些属性的警告,我终于注意到了。可以节省大量的时间!