设置Android背景和持久性菜单栏 - 在旧版本上使用属性会导致崩溃 - 是否有主题/模式方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (17)

在Android 3.0中,“checked”的概念可以使用“激活”背景呈现。这为您提供了在点击列表片段时看到的持久性栏,为片段提供了列表右侧的上下文(例如,在Gmail中的文件夹中点击突出显示该文件夹并打开另一个列表片段以显示该文件夹中的对话)。

例如,片段样本显示如下内容:

setListAdapter(new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_list_item_activated_1, Shakespeare.TITLES));

该资源(android.R.layout.simple_list_item_activated_1)是Android 3.0的新功能。是什么使其“激活”是:

android:background="?android:attr/activatedBackgroundIndicator"

我可以通过使用两个版本的布局来实现这一目标,一个版本在-v11资源集合中,一个在常规资源集合中。不过,这比我想要的要少一点DRY,因为大部分布局是相同的,只有这一个属性被包含或被跳过。

我试图使用drawable资源别名,所以android:background可以引用别名,别名将处理-v11区分,但<bitmap>drawables似乎并不喜欢android:src="@null"

提问于
用户回答回答于

每个值目录都包含一个styles.xml,区别在于其中包含的默认值;

<style name="listViewActivatedStyle"/>

值-v11包含;

<style name="listViewActivatedStyle">
   <item name="android:background">?android:attr/activatedBackgroundIndicator</item>
</style>

然后你可以有一个单一的布局使用;

style="@style/listViewActivatedStyle"

扫码关注云+社区