我想摆脱偏好活动中的顶部标题栏和所有子屏幕。 我面临的问题现在不会出现在果冻豆上,而是出现在旧版本上。 如果我不能删除它,我想改变它的行为,所以子屏幕中的标题不会从列表项目转移。
我没有在此屏幕中设置任何标题,系统从父屏幕复制了文本属性。父屏幕上的标题已由root preferencecategory上的setTitle()设置。问题存在于2.3.6
答案 0 :(得分:3)
在AndroidManifest中使用它:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
答案 1 :(得分:1)
正如您所注意到的,此问题已在最近的Android版本中修复。它是由嵌套首选项被硬编码以始终使用框架中的内部Theme
或Theme_NoTitleBar
的错误引起的。在姜饼发布后的某个时间,commit that fixed the bug显然已合并。
解决此错误的最简单方法(仅删除不需要的标题文本)是向onPreferenceClickListener
对象添加PreferenceScreen
并将标题设置为null。对于您发布的代码,它的外观如下:
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;
}
});
希望它有所帮助! :)
答案 2 :(得分:0)
以下对我有用:
将每个首选项创建为单独的XML和单独的Activity!这将阻止继承此类属性。
然后您可以从父偏好中调用子偏好,如下所示:
<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,parent和children:
android:theme="@style/app_theme_no_title_pref"
因此,在您的Manifest中,您的孩子偏好活动应该如下所示:
<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>
答案 3 :(得分:-1)
在你的java文件中使用它:
requestWindowFeature(Window.FEATURE_NO_TITLE);
答案 4 :(得分:-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的创建上调用此方法
所以......
您可以执行您的活动,所有子类可能都是标记的FullScreen。
public class MyActivity extends FullScreenActivity
尝试这个来测试解决...你可以为每个Activity设置setTitle(如果没有,使用超类标题)。