如何在较低的api上使用更高api的xml属性?
问题描述:
我想在较低的android系统上使用更高api的xml属性。如何做到这一点,而不会改变太多?如android:layout_columnWeight
和android:layout_rowWeigh
。 这里是我的XML代码:如何在较低的api上使用更高api的xml属性?
<GridLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="0"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="Hello"
android:id="@+id/hello"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="0"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="How are you"
android:id="@+id/howareyou"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="1"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="good evening"
android:id="@+id/goodevening"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="1"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="please"
android:id="@+id/please"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="2"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="my name is"
android:id="@+id/mynameis"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="2"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="do you speak english"
android:id="@+id/doyouspeakenglish"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_row="3"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="welcome"
android:id="@+id/welcome"
android:onClick="buttonTapped"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_column="1"
android:layout_row="3"
android:layout_gravity="fill"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="i live in"
android:id="@+id/ilivein"
android:onClick="buttonTapped"/>
请不要说用另一种方法来做到这一点,网格布局是非常有用的,但我不能用较低的Android系统。
答
只需从支持库切换到GridLayout
即可。
这样你就可以在旧的API上使用你的layout_columnWeight
,但用app
替换android
命名空间前缀。
唯一的另一种方法是使用替代布局文件你layout-v21
目录或里面的东西。
指定对GridLayout来说太低的目标API级别可能会有所帮助。它不是一个V7支持库吗? – emerssso
这些属性不与API级别绑定。这些属性与容器有关。您可以使用[GridLayout.LayoutParams'](https://developer.android.com/reference/android/widget/GridLayout.LayoutParams.html)上定义的属性,因为您的小部件位于'GridLayout'内部。而且,如答案所述,如果您想在API Level 14之前使用'GridLayout',请使用'support-v4'库中的'GridLayout' backport。 – CommonsWare