Android ActionBarSherlock对话框不透明且不暗
我正在使用并希望在我的应用程序中添加一个对话框,如项目提供的中所示。对话框示例如下所示: 我自己创建了一个活动。以下是相关的源代码:Android ActionBarSherlock对话框不透明且不暗,android,dialog,transparent,actionbarsherlock,android-theme,Android,Dialog,Transparent,Actionbarsherlock,Android Theme,我正在使用并希望在我的应用程序中添加一个对话框,如项目提供的中所示。对话框示例如下所示: 我自己创建了一个活动。以下是相关的源代码: public class Dialog extends SherlockActivity { @Override public void onCreate(Bundle savedInstanceState) { setTheme(R.style.Sherlock___Theme_DarkActionBar); s
public class Dialog extends SherlockActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Sherlock___Theme_DarkActionBar);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dialog);
}
}
出于某种原因,Android强迫我添加setTheme()
,尽管ABS示例没有这样做。如果我省略它,我将遇到以下错误
java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.
MyAndroidManifest.xml
具有以下设置,这些设置与ABS示例中的设置非常相似
<activity
android:name=".activities.Dialog"
android:label="@string/title_activity_dialog"
android:theme="@style/Theme.Sherlock.Dialog" >
</activity>
同时,我看到它被弃用了。相反,我可以用一个。这里出现的问题是:如何将片段与操作菜单项集成
替代解决方案: 我决定使用
对话框片段
而不是活动
,因为我估计它更“安全”。我基本上遵循了非常翔实的教程,我喜欢推荐它作为任何感兴趣的读者的完美起点。此外,我想添加相关和有用的帖子:
<application
android:theme="@style/Theme.Sherlock"
您看到的输出肯定来自在Java代码中设置主题(这将覆盖XML中设置的值)。我刚刚启动了下面的示例应用程序(这就是全部内容),并通过添加额外的setTheme()
调用复制了这个问题
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Dialog"
android:theme="@style/Theme.Sherlock.Dialog">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
至于为什么没有那个额外的方法就得到了一个异常,那是另一回事(而且很奇怪)。正如您所看到的,它应该使用我上面提供的代码
也许要确保库项目和您的项目都至少使用安卓4.0(API 14)进行编译,因为这是库的要求
除此之外,如果您只想在应用程序中显示一个对话框,它是否需要是一个主题活动?这并不常见。您始终可以创建一个简单的对话框
或警报对话框
子类来显示。有关详细信息…您建议的配置允许对话框显示黑色背景色和白色输入字段。此外,仍然可以看到一个actionbar。但是,该对话框是不透明的。能否演示如何启动此活动?这可能是因为您违反了这里的一个警告(请参见注释:):我检查了ActionBarSherlock库项目和我自己的:都是目标API级别16。我没有从你的回答中读到的是:你是否成功构建了一个透明的模态对话框?我测试了你的代码,结果与我的第二个截图相同不过,我将再次签出对话框
文档。是的,在2.3.3和4.0设备上,输出与示例应用程序的输出完全匹配(您的第一个屏幕截图)。我应该补充一点,当设置主题(R.style.Sherlock_uuuuuuuuu主题_DarkActionBar)时,它看起来像您的第二个屏幕截图代码>已重新添加到中。
<application
android:theme="@style/Theme.Sherlock"
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Dialog"
android:theme="@style/Theme.Sherlock.Dialog">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
public class Dialog extends SherlockActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView text = new TextView(this);
text.setText("This is a dialog!");
setContentView(text);
}
}