2016-08-22 34 views
1

我想在较低的android系统上使用更高api的xml属性。如何做到这一点,而不会改变太多?如android:layout_columnWeightandroid: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 &#10;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系统。

+1

指定对GridLayout来说太低的目标API级别可能会有所帮助。它不是一个V7支持库吗? – emerssso

+0

这些属性不与API级别绑定。这些属性与容器有关。您可以使用[GridLayout.LayoutParams'](https://developer.android.com/reference/android/widget/GridLayout.LayoutParams.html)上定义的属性,因为您的小部件位于'GridLayout'内部。而且,如答案所述,如果您想在API Level 14之前使用'GridLayout',请使用'support-v4'库中的'GridLayout' backport。 – CommonsWare

回答

0

只需从支持库切换到GridLayout即可。

这样你就可以在旧的API上使用你的layout_columnWeight,但用app替换android命名空间前缀。

Reference

唯一的另一种方法是使用替代布局文件你layout-v21目录或里面的东西。

相关问题