使用新的 v7 操作栏兼容性库时,我遇到了旧设备上的样式问题。所有样式都搞砸了,例如我正在使用列表导航,并且控制导航的微调器具有默认微调器的圆圈
这是它在 API 10 上的样子:
而这就是它在 API 17 上的样子:
如何让样式匹配?
使用新的 v7 操作栏兼容性库时,我遇到了旧设备上的样式问题。所有样式都搞砸了,例如我正在使用列表导航,并且控制导航的微调器具有默认微调器的圆圈
这是它在 API 10 上的样子:
而这就是它在 API 17 上的样子:
如何让样式匹配?
我也一直在处理这个问题。关于如何使用 appcompat 库保持列表导航模式向后兼容的文档不是很清楚。这是你应该如何初始化它:
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
getSupportActionBar().getThemedContext(), R.array.my_list_of_items,
R.layout.support_simple_spinner_dropdown_item);
getSupportActionBar().setListNavigationCallbacks(adapter, this);
请注意,我使用 getSupportActionBar().getThemedContext() 来获得适当的样式。但这还不够。您还需要使用正确的支持布局:
只有这样,您才能摆脱 Honeycomb 之前的 Android 版本上的单选按钮图像。
好的,我找到了,我必须在传递给操作栏的数组适配器上使用 setDropDownViewResource()。这使我可以设置自定义布局。问题是它使用了 CheckedTextView ,这就是圆形可绘制对象的来源。我只是给它传递了一个文本视图,它工作正常。