gpt4 book ai didi

Android:如何以编程方式将 Activity 的主题设置为 Theme.Dialog

转载 作者:IT王子 更新时间:2023-10-29 00:07:38 31 4
gpt4 key购买 nike

所以我有一个 Activity(比如 TestActivity),它需要充当普通的非主题 Activity 以及 Theme .Dialog 在其他地方。我正在尝试为这两个任务重用相同的 TestActivity

我正在寻找动态设置主题。代码很简单:这是我的 Activity 的 onCreate,适用于黑色背景

public void onCreate(Bundle icicle) {
if (Utility.isDialog == true)
setTheme(android.R.style.Theme_Dialog);
super.onCreate(icicle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
.....

这是 list 条目

<activity android:name=".TestActivity"/>

同时我发现一个帖子说不能在这里完成是帖子http://code.google.com/p/android/issues/detail?id=4394 .但是有一种强烈的感觉是可以做到的。

欢迎所有建议。

最佳答案

想解决这个问题。

问题:如何使用相同的 Activity 作为对话框和全屏。

解决方案:

  1. 在您的 AndroidManifest.xml 中使用主题定义您的 Activity @android:style/Theme.Dialog
  2. 在您各自的 .Java 文件中,检查定义 dialog 模式的 intent 额外内容。
  3. 如果不存在,请将 Theme 设置为 android.R.style.Theme。这是默认的 theme,如果您未定义任何主题,则会应用它。

代码:

boolean fDialogMode = getIntent().hasExtra("dialog_mode");

if( ! fDialogMode ) {
super.setTheme(android.R.style.Theme);
}

替代解决方案:

一个更复杂的解决方案是使用 AlertDialog 如下:

  1. 定义一个从 ArrayAdapter 扩展而来的 ListAdapter 类。
  2. getCount函数中返回1

    @Override
    public int getCount() { return 1; }
  3. getView函数中,inflate你需要的activitylayout并做任何在返回 view 之前进行自定义。

    @Override
    public View getView( int position, View view, ViewGroup group ) {
    View v = view;
    if( v == null ) {
    v = getSystemService(Context.LAYOUT_INFLATER_SERVICE).inflate( <layout res id>, null );
    }

    ... Do any customization here ....

    return v;
    }

如果您没有在 activity class 中进行过多处理,这绝对是第二选择。

考虑此解决方案的唯一原因可能是在 dialog 中显示它的逻辑与用作对话框的地方隔离。

这两个选项都对我有用,但出于显而易见的原因,我选择了第一个选项。 :-)

关于Android:如何以编程方式将 Activity 的主题设置为 Theme.Dialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4967904/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com