我正在使用以下内容创建一个Alert对话框:
AlertDialog.Builder builder = new AlertDialog.Builder(context);
Run Code Online (Sandbox Code Playgroud)
在Android 3.0中,警报对话框继承了创建它们的活动的主题.您可以通过使用以下方法创建警报对话框来覆盖此操作:
AlertDialog.Builder builder = new AlertDialog.Builder(context, AlertDialog.THEME_HOLO_DARK);
Run Code Online (Sandbox Code Playgroud)
(更多关于此处)
不幸的是,这个强制关闭了先前版本的Android.我假设使用反射是答案,但无论我阅读多少,我都无法弄清楚语法.任何人都可以提供一个例子吗?
我假设使用反射是答案,但无论我阅读多少,我都无法弄清楚语法.
你也许可以使用反射.我不会.
我会去的HoneycombHelper.
此示例项目还有一种情况,它需要为3.0执行不同的操作 - 在这种情况下,View在操作栏中使用自定义.你不能getActionView()在MenuItem3.0之前打电话.
所以,在我需要自定义的地方View,我这样做:
EditText add=null;
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
View v=HoneycombHelper.getAddActionView(menu);
if (v!=null) {
add=(EditText)v.findViewById(R.id.title);
}
}
if (add!=null) {
add.setOnEditorActionListener(onSearch);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我将getActionView()调用埋在一个HoneycombHelper类的静态方法中:
class HoneycombHelper {
static View getAddActionView(Menu menu) {
return(menu.findItem(R.id.add).getActionView());
}
}
Run Code Online (Sandbox Code Playgroud)
我只加载HoneycombHelper3.0或更高版本,所以即使它包含旧版Android的无效方法调用,也不是问题.
在您的情况下,您HoneycombHelper将拥有gimmeMyBuilderDammit()使用API Level 11构造函数的方法或类似方法.
| 归档时间: |
|
| 查看次数: |
1044 次 |
| 最近记录: |