4

我想摆脱偏好活动和所有子屏幕中的顶部标题栏。我现在面临的问题不会出现在果冻豆上,而是出现在旧版本上。如果我无法删除它,我想更改它的行为,以便子屏幕中的标题不会从列表项中转移。

我没有在这个屏幕上设置任何标题,文本属性是由系统从父屏幕复制的。父屏幕上的标题已由 setTitle() 在根偏好类别中设置。问题存在于 2.3.6

在此处输入图像描述

在此处输入图像描述

4

5 回答 5

3

在 AndroidManifest 中使用它:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
于 2012-08-27T15:02:58.347 回答
1

如您所见,此问题已在较新的 Android 版本中得到修复。这是由嵌套首选项硬编码为始终使用内部ThemeTheme_NoTitleBar来自框架的错误引起的。修复 bug的提交显然是在 Gingerbread 发布后的某个时间合并的。

解决此错误的最简单方法(只是为了摆脱不需要的标题文本)是将一个添加onPreferenceClickListener到您的PreferenceScreen对象并将标题设置为空。对于您发布的代码,它是这样的:

    particleSettings.setLayoutResource(R.layout.iconpreferencee);
    particleSettings.setKey("screen_preference");
    particleSettings.setTitle(Html.fromHtml("" + "Particles" + ""));
    particleSettings.setSummary(Html.fromHtml("<font color=\"#7c71d8\">"
            + "Count , type , color , size, gitter ... " + "</font>"));
    // workaround for Android bug 5351628
    particleSettings.setOnPreferenceClickListener(
            new OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference pref) {
                    final PreferenceScreen screen = (PreferenceScreen) pref;
                    screen.getDialog().setTitle(null);
                    return false;
                }
            });

希望能帮助到你!:)

于 2012-09-07T18:09:03.713 回答
0

以下对我有用:

将每个首选项创建为单独的 XML 和单独的活动!这将防止这种属性被继承。

然后,您可以像这样从父母偏好中调用子偏好:

<Preference
    android:key="TODO"
    android:title="@string/TODO"
    android:summary="@string/TODO"
>
    <intent
        android:action="com.example.project.preference.child1" />
</Preference>

并且您的孩子偏好应该在 Manifest 上定义相同的操作

<action android:name="com.example.project.preference.child1" />

确保com.example.project.preference.child1是唯一的!

现在,在 values/styles.xml 上,添加以下内容:

<style name="app_theme_no_title_pref" parent="android:Theme.Light">
    <item name="android:windowNoTitle">true</item>
</style>

当然,您可以将android:Theme.Light更改为您需要的任何内容。

在 Manifest 上,将其添加到所有 Preferences Activity、父项和子项中:

android:theme="@style/app_theme_no_title_pref"

因此,在您的清单中,您的孩子偏好活动应如下所示:

<activity android:name=".TODO"
    android:label="@string/TODO"
    android:theme="@style/app_theme_no_title_pref">
    <intent-filter>
        <action android:name="com.example.project.preference.child1" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
于 2012-09-05T15:24:41.153 回答
-1

在你的java文件中使用它:

requestWindowFeature(Window.FEATURE_NO_TITLE);
于 2012-09-03T13:13:44.547 回答
-1

您可以先尝试删除标题吗:添加一个超类,例如(例如):

public class FullScreenActivity extends Activity

在 FullScreenActivity 中,添加方法:

    private void addFlags() {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);


    this.getWindow().addFlags(
            WindowManager.LayoutParams.FLAG_FULLSCREEN
                    | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                    | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                    | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);


    Log.d(TAG, "add flags");
}

并调用 FullScreenActivity 的 onCreate 这个方法

所以...

您可以通过标志进行活动和所有子类可能是全屏。

public class MyActivity extends FullScreenActivity

试试这个来测试解决......你可以为每个活动设置标题(如果没有,使用超类标题)。

于 2012-09-05T13:22:22.713 回答