2012-08-27 88 views
4

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

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

enter image description here

enter image description here

+1

上传您的AndroidManifest.xml代码。 – Lucifer

+0

http://pastebin.com/LPgLGqY9 – ZZZ

+0

您想为单个屏幕或所有活动设置全屏吗? – Lucifer

回答

1

正如您已经注意到,这个问题已经在更新的Android版本中得到修复。这是由嵌套首选项被硬编码以始终使用框架内部ThemeTheme_NoTitleBar的错误引起的。在Gingerbread发布后的某个时候,显然合并了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; 
       } 
      }); 

希望它有帮助! :)

4

使用此存在于AndroidManifest:在你的java文件

android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
+1

它已经设置,这两个酒吧在这个屏幕arent标题栏从活动,我的意思是那些标题栏与从首选项屏幕中选择类别名称,当我触摸粒子时,在第二个屏幕截图上,屏幕上显示第一个屏幕截图,并将其标题从第一个列表中的名称传输,并使用所有文本属性传输。我使用setTitle(Html.fromHtml(“some text and tags”))来设置列表中元素的字体和颜色,并且这个整个html从列表元素布局中的“标题”位置转移到子画面中的标题。 – ZZZ

-1

使用本:

requestWindowFeature(Window.FEATURE_NO_TITLE); 
-1

你可以尝试先删除标题:添加一个超类,如(f或为例):

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"); 
} 

而且调用此方法的onCreate FullScreenActivity

所以......

你可以做你的活动和所有的子类可能是FullScreen by flags。

public class MyActivity extends FullScreenActivity 

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

0

以下为我工作:

创建每个偏好作为一个单独的XML和一个单独的活动!这会阻止这种属性被继承。

然后,您可以拨打孩子的偏好从父母偏爱这样的:

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

和您的孩子应优先对舱单

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

定义了同样的动作确保com.example.project .preference.child1是独一无二的!

现在,价值观/ styles.xml,补充一点:

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

当然,你可以改变安卓Theme.Light到任何你所需要的。

在清单,将它添加到所有偏好活动,家长和孩子:

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>