以编程方式将 AppCompatActivity 显示为对话框
Show AppCompatActivity as dialog programmatically
我想在我的设备是平板电脑时显示 Activity(使用 AppCompat)作为对话框。
这是我的 MyAppCompatActivity
主题
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="windowNoTitle">true</item>
</style>
当我像这样将这个主题直接放入 Manifest.xml 时,效果很好:
<activity android:name=".MyAppCompatActivity" android:theme="@style/AppDialogTheme"/>
但是当我想以编程方式设置我的主题时,我的 Activity 显示为对话框,但背景覆盖是黑色的(并且不像第一种方法那样透明)。这是我的代码:
public abstract class MyAppCompatActivity extends AppCompatActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
if(isTablet)
{
setTheme(R.style.AppDialogTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
}
}
尝试使用以下代码更改背景颜色:
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="windowNoTitle">true</item>
<item name="android:background">#FF0000</item> //Your custom background color
</style>
当然,您可以像这样从您的自定义 my_layout
更改背景颜色:
android:background="#FF0000"
你是对的,根据Android Developers,似乎那个对话框出现了黑暗 color.But 文档,如果您在 large screens
上使用,则必须在 Manifest
中添加:
<activity android:theme="@android:style/Theme.Holo.DialogWhenLarge" >
与AppCompat
:
Theme.AppCompat.Light.DialogWhenLarge
// or
Theme.AppCompat.DialogWhenLarge
还有其他东西,请查看来自 Android 开发人员的 link:
http://developer.android.com/reference/android/app/Dialog.html
内容如下:
Public Constructors
Dialog(Context context) Creates a dialog window
that uses the default dialog theme. Dialog(Context context, int
themeResId) Creates a dialog window that uses a custom dialog style.
老实说,我在那里找不到 Dialogs
的 setTheme
之类的任何方法。(我不太确定,但不存在)。
我正在考虑您的实施方式,我认为这不是创建 dialog
的好方法。检查并尝试以下代码来创建Dialog
:
public class MyAppCompatActivity extends Dialog
代替您的代码:
public abstract class MyAppCompatActivity extends AppCompatActivity
我认为你这样做的方式不对,比如 Activity
。检查以下 link 以创建 dialog
:
How to create a Custom Dialog box in android?
我想在我的设备是平板电脑时显示 Activity(使用 AppCompat)作为对话框。
这是我的 MyAppCompatActivity
主题<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="windowNoTitle">true</item>
</style>
当我像这样将这个主题直接放入 Manifest.xml 时,效果很好:
<activity android:name=".MyAppCompatActivity" android:theme="@style/AppDialogTheme"/>
但是当我想以编程方式设置我的主题时,我的 Activity 显示为对话框,但背景覆盖是黑色的(并且不像第一种方法那样透明)。这是我的代码:
public abstract class MyAppCompatActivity extends AppCompatActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
if(isTablet)
{
setTheme(R.style.AppDialogTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
}
}
尝试使用以下代码更改背景颜色:
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="windowNoTitle">true</item>
<item name="android:background">#FF0000</item> //Your custom background color
</style>
当然,您可以像这样从您的自定义 my_layout
更改背景颜色:
android:background="#FF0000"
你是对的,根据Android Developers,似乎那个对话框出现了黑暗 color.But 文档,如果您在 large screens
上使用,则必须在 Manifest
中添加:
<activity android:theme="@android:style/Theme.Holo.DialogWhenLarge" >
与AppCompat
:
Theme.AppCompat.Light.DialogWhenLarge
// or
Theme.AppCompat.DialogWhenLarge
还有其他东西,请查看来自 Android 开发人员的 link:
http://developer.android.com/reference/android/app/Dialog.html
内容如下:
Public Constructors
Dialog(Context context) Creates a dialog window that uses the default dialog theme. Dialog(Context context, int themeResId) Creates a dialog window that uses a custom dialog style.
老实说,我在那里找不到 Dialogs
的 setTheme
之类的任何方法。(我不太确定,但不存在)。
我正在考虑您的实施方式,我认为这不是创建 dialog
的好方法。检查并尝试以下代码来创建Dialog
:
public class MyAppCompatActivity extends Dialog
代替您的代码:
public abstract class MyAppCompatActivity extends AppCompatActivity
我认为你这样做的方式不对,比如 Activity
。检查以下 link 以创建 dialog
:
How to create a Custom Dialog box in android?