Android: ¿Para qué se utiliza android.R.id.content?


140

¿Alguien podría explicar el significado de "android.R.id.content"?

¿Cómo se usa?

http://developer.android.com no tiene ninguna explicación.

contenido int final estático público
desde: API Nivel 1

Valor constante: 16908290 (0x01020002)


94
android.R.id.contentle proporciona el elemento raíz de una vista, sin tener que conocer su nombre / tipo / ID real. Echa un vistazo a stackoverflow.com/questions/4486034/…
Philipp Reichart

2
Esto es útil en transacciones de fragmentos como: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky

@IgorGanapolsky Una aplicación de ejemplo realiza este tipo de transacción de manera condicional: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}¿Puedes decir cuál Viewes el elemento raíz?
Consuelo

@ Zarah ¿Estás seguro de que tu sintaxis es correcta aquí y compilable?
IgorGanapolsky

¿Con qué clase de diseño está asociado android.R.id.content ?
Sushant

Respuestas:


98

Como Philipp Reichart comentó :

android.R.id.contentle proporciona el elemento raíz de una vista, sin tener que conocer su nombre / tipo / ID real. Echa un vistazo a http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity


55
Un ejemplo práctico de su uso se puede encontrar en el párrafo 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1

44
"le proporciona el elemento raíz de una vista , sin tener que saber su nombre / tipo / ID real" ¿Cómo sabe de qué vista es que queremos el elemento raíz?
Consuelo

21

El android.R.id.contentvalor de ID indica la ViewGrouptotalidad del área de contenido de un Activity.

Se puede usar con Fragment:

public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, MyFragment.newInstance())
                .commit();
        }
    }

    ...

}

El código anterior insertará el Viewcreado por Fragmenten el ViewGroupidentificado por android.R.id.content.


9

Los diseñadores de Google desarrollan Android UX con pautas de diseño específicas o recomendadas. El diseño android.R.id.content define una distribución lineal con algunos atributos que Android cree que son un buen estándar.

Por lo tanto, cargar la vista raíz de un Fragment Manager con android.R.id.content garantiza que se implementen estas pautas.

NOTA: Este diseño ha establecido el atributo: android: addStatesFromChildren = "true" para permitir que los fragmentos secundarios sobrescriban atributos en esta vista raíz.

A partir de la versión 19, android.R.id.content se define en un archivo: auto_complete_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/content"
    android:orientation="vertical"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:background="@android:drawable/edit_text"
    android:divider="@android:drawable/divider_horizontal_textfield"
    android:addStatesFromChildren="true">
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.