2011-02-07 9 views

Respuesta

10

PreferenceActivity extends ListActivity, y cuando se infla las preferencias de XML con addPreferencesFromResource(), que pone las cosas en las que los estándares ListViewListActivity usos.

Así que, básicamente, puede usar setContentView() para especificar un diseño, pero debe tener un ListView con el ID "@+android:id/list".

Así, utilizando código de ejemplo de kleini:

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

Se necesitaría un ListView de login_settings_layout.xml que se ve algo como:

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

'@ + android: id/list' debe ser' @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

lo he intentado, pero no funcionó. No cambia nada – fhucho

+0

Esto no funciona para PreferenceActivity, pero funciona bien para otras actividades ... –

0

impresionante, funcionó bien para "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

¿Puedes publicar login_settings_layout.xml? – fhucho

0

O así:

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

Con un customtitlebar .xml como este:

<?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

El método de Ben funcionó bien para mí !!. Aquí está el código

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

cómo cambiar el texto? –

1

Esto es lo único que trabajó para mí. El resto de las cosas anteriores no obtuvieron los resultados deseados en mi Tablet Nexus 4.3.

Realmente no pude recrear una barra de acciones adecuada como widget, pero pude poner un gran título de 'Configuración' sobre la Actividad de preferencia, con los pasos a continuación.

Recibí la pista de otra respuesta de stackoverflow y la estoy haciendo más elaborada.

  1. En la clase PreferenceActivity (quitar la barra de título vigente)

    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. En res/xml/settings.xml, quisiera llamar la atención sobre la primera 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. En res/layout/settings_titlebar.xml

Navals-MacBook Pro-: ver_ui_0.2 Navales $ vi res/layout/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> 
Cuestiones relacionadas