我想摆脱偏好活动和所有子屏幕中的顶部标题栏。我现在面临的问题不会出现在果冻豆上,而是出现在旧版本上。如果我无法删除它,我想更改它的行为,以便子屏幕中的标题不会从列表项中转移。
我没有在这个屏幕上设置任何标题,文本属性是由系统从父屏幕复制的。父屏幕上的标题已由 setTitle() 在根偏好类别中设置。问题存在于 2.3.6
我想摆脱偏好活动和所有子屏幕中的顶部标题栏。我现在面临的问题不会出现在果冻豆上,而是出现在旧版本上。如果我无法删除它,我想更改它的行为,以便子屏幕中的标题不会从列表项中转移。
我没有在这个屏幕上设置任何标题,文本属性是由系统从父屏幕复制的。父屏幕上的标题已由 setTitle() 在根偏好类别中设置。问题存在于 2.3.6
在 AndroidManifest 中使用它:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
如您所见,此问题已在较新的 Android 版本中得到修复。这是由嵌套首选项硬编码为始终使用内部Theme
或Theme_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;
}
});
希望能帮助到你!:)
以下对我有用:
将每个首选项创建为单独的 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>
在你的java文件中使用它:
requestWindowFeature(Window.FEATURE_NO_TITLE);
您可以先尝试删除标题吗:添加一个超类,例如(例如):
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
试试这个来测试解决......你可以为每个活动设置标题(如果没有,使用超类标题)。