2012-08-27 133 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>