Navigation Drawer Android API specific Layout Attr

2020-02-24 04:08发布

问题:

Hello I have created a navigation drawer with ListView navigation using ActionBar Sherlock and android support Library v4 for old version compatbility (my app's minSdkversion="8") in which I have used some attributes for textview in ListView:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingLeft="16dp"
    android:paddingRight="5dp"
    android:textColor="#fff"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"/>

This is showing error as ?android:attr/activatedBackgroundIndicator is from API 11 and ?android:attr/textAppearanceListItemSmall & ?android:attr/listPreferredItemHeightSmall are from API 14.

I managed to support ?android:attr/activatedBackgroundIndicator by replacing it with actionBar Sherlock's ?attr/activatedBackgroundIndicator. But I didn't find any equivalence for other two attributes. There is ?attr/textAppearanceListItemSmall in actionBar Sherlock but it is not properly working.

So what are the equivalence for these attributes to provide support all the API above 2.1 ?

回答1:

I am not sure if you really need to use android dimensions (like listPreferredItemHeightSmall etc.) In some android version can that dimension be 12 and in other 14. I suggest you to create your own dimension, which will be used in your whole app, and you can easily edit them when change is needed.



回答2:

To support lower versions, instead of removing the following three parameters,

  android:textAppearance="?android:attr/textAppearanceListItemSmall" 
  android:background="?android:attr/activatedBackgroundIndicator"
  android:minHeight="?android:attr/listPreferredItemHeightSmall"

You can actually replace them with equivalent values/resources.

The equivalent values can be obtained from https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/themes.xml

Now,

  • a) android:textAppearance="@android:style/TextAppearance.Medium"

  • b)

    1. Download a selector from https://github.com/habzy/Test0011_DialerPad/blob/master/res/drawable/list_item_activated_background.xml

    2. In the above project browse the resources in hdpi,mdpi etc and get files named list_activated_holo.9.png

    3. Finally

    android:background="@drawable/list_item_activated_background"

  • c) From the equivalent values obtained , we know that listPreferredItemHeightSmall is 48dip

    android:minHeight="48dip"