2011-02-07 12 views

Odpowiedz

10

PreferenceActivity extends ListActivity, a kiedy nadmuchać preferencje z xml z addPreferencesFromResource(), stawia towar do standardowych ListView że ListActivity zastosowań.

W zasadzie można użyć setContentView() do określenia układu, ale trzeba mieć w nim ListView o identyfikatorze "@+android:id/list".

Więc za pomocą przykładowy kod kleini za:

protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.login_settings); 
    setContentView(R.layout.login_settings_layout); 
} 

musisz ListView w login_settings_layout.xml, który wygląda mniej więcej tak:

<ListView 
    android:id="@+android:id/list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 
+1

'@ + android: id/list' powinien być' @android: id/list' – mwieczorek

1
public class Preferences extends PreferenceActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    super.onCreate(savedInstanceState); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_bar); 
} 
} 
+0

Próbowałem to, ale to nie działa. Nic nie zmienia. – fhucho

+0

To nie działa dla PreferenceActivity, ale działa dobrze dla innych działań ... –

0

Awesome, pracował w porządku dla "NO_TITLE":

protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.login_settings); 
    setContentView(R.layout.login_settings_layout); 
} 
+2

Czy możesz przesłać login_settings_layout.xml? – fhucho

0

Albo tak:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 
    super.onCreate(savedInstanceState); 
    getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.customtitlebar); 
    addPreferencesFromResource(R.xml.preferences); 
} 

Z customtitlebar .xml w ten sposób:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/customTitleBar" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    style="@style/CustomWindowTitle"> 
</TextView> 
1

Metoda Bena dobrze się sprawdziła !!. Oto kod

public class PreferenceCustomTitleActivity extends PreferenceActivity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    addPreferencesFromResource(R.xml.preference); 

    /** Customize your background, textsize, cachetint, dividers 
     for your list view in the xml **/ 
    setContentView(R.layout.layout_with_simple_listview_only); 

    ListView list = (ListView) findViewById(android.R.id.list); 

    View preferenceHeader = getLayoutInflater().inflate(
      R.layout.preference_header, null); 
    list.addHeaderView(preferenceHeader); 
} 

}

+0

jak zmienić tekst? –

1

Jest to jedyna rzecz, która pracowała dla mnie. Reszta powyższych rzeczy nie przyniosła pożądanych wyników na moim tabletie 4.3 Nexus.

Naprawdę nie mogłem odtworzyć odpowiedniego paska czynności, takiego jak widżet, ale udało mi się umieścić duży tytuł "Ustawienia" na wierzchu PreferenceActivity, wykonując poniższe czynności.

Dostałem podpowiedź od innej odpowiedzi od stackoverflow i po prostu robię to bardziej rozbudowanym.

  1. W klasie PreferenceActivity (usunąć istniejący pasek tytułowy)

    public class Settings extends PreferenceActivity· { 
        ... 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
        requestWindowFeature(Window.FEATURE_NO_TITLE); // This goes first 
        super.onCreate(savedInstanceState); 
        addPreferencesFromResource(R.xml.settings); 
    
  2. W res/XML/settings.xml, chciałbym zwrócić uwagę na pierwsze PreferenceCategory

    <?xml version="1.0" encoding="utf-8"?> 
    <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    
        <PreferenceCategory 
         android:layout="@layout/settings_titlebar" /> 
    
        <PreferenceCategory android:title="Notifications"> 
         <Preference ..... 
    
  3. W res/layout/settings_titlebar.xml

Navals-MacBook-Pro: ver_ui_0.2 Naval $ vi RES/Układ/settings_titlebar.xml

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:background="@drawable/header_background" 
    android:enabled="false"> 

    <TextView android:src="@drawable/logo" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:adjustViewBounds="true" 
     android:background="@android:color/transparent" 
     android:padding="4dip" 
     android:text="Settings" 
     android:textSize="32sp" 
     /> 

    </RelativeLayout> 
Powiązane problemy