android版本兼容的一点处理办法

问题背景:

1、app要使用actionbar,为了兼容低版本,使用了开源框架actionbarSherlock,activity继承SherlockActivity,即可。

2(重点)、actionbar的item在点击时有个默认背景色android:background="?android:attr/actionBarItemBackground",自己自定义了一个actionbar  logo,但点击背景色不想改变,还是使用android:background="?android:attr/actionBarItemBackground",不过 我的minsdk定义是11,

<uses-sdk
        android:maxSdkVersion="19"
        android:minSdkVersion="11"
        android:targetSdkVersion="19" />

,“?android:attr/actionBarItemBackground” 这个只能在API 14+的版本使用,低版本不支持,查找半天,找到一个方法,能指定在14+以上版本才使用android:background="?android:attr/actionBarItemBackground",方法如下:

在values和values-v14文件夹分别建立一个styles文件,values-v14中sytles添加一个style:

1、<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">

    <style name="actionbarlogobcg">
        <item name="android:background" tools:targetApi="14">?android:attr/actionBarItemBackground</item>
    </style>

</resources>

2、values中sytles添加一个style:

<resources xmlns:android="http://schemas.android.com/apk/res/android" >

    <style name="actionbarlogobcg">
        <item name="android:background">@drawable/room_item_new_bacg_selector</item>
    </style>

</resources>

然后在布局文件中应用这个style:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/home"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    style="@style/actionbarlogobcg"
    android:orientation="horizontal"
    android:paddingRight="5dp" >

这样低版本会进第2步,高版本进第1步,完成版本兼容!



展开阅读全文

没有更多推荐了,返回首页