Android: a cosa serve android.R.id.content?


141

Qualcuno potrebbe spiegare il significato di "android.R.id.content"?

Come viene usato?

http://developer.android.com non ha alcuna spiegazione.

contenuto int statico pubblico finale
Da: API Livello 1

Valore costante: 16908290 (0x01020002)


94
android.R.id.contentti dà l'elemento radice di una vista, senza dover conoscere il suo nome / tipo / ID reali. Dai
Philipp Reichart,

2
Ciò è utile nelle transazioni di frammenti come: mFragmentTransaction.add (android.R.id.content, myFragment);
IgorGanapolsky,

@IgorGanapolsky Un'app di esempio esegue questo tipo di transazione in modo condizionale: if(fragmentManager.findFragmentById(android.R.id.content)==null) {fragmentManager.beginTransaction(android.R.id.content, list).add().commit();}puoi dire qual Viewè l'elemento radice?
Solace,

@Zarah Sei sicuro che la tua sintassi sia corretta qui e compilabile?
IgorGanapolsky,

A che cosa è associata la classe del layout android.R.id.content ?
Sushant,

Risposte:


100

Come ha commentato Philipp Reichart :

android.R.id.contentti dà l'elemento radice di una vista, senza dover conoscere il suo nome / tipo / ID reali. Dai un'occhiata a http://stackoverflow.com/questions/4486034/android-how-to-get-root-view-from-current-activity


5
Un esempio pratico del suo utilizzo può essere trovato nel paragrafo 2: developer.android.com/guide/topics/ui/actionbar.html#Tabs
OrhanC1

4
"ti dà l'elemento radice di una vista , senza doverne conoscere il nome / tipo / ID effettivi" Come fa a sapere di quale vista è l'elemento di cui vogliamo l'elemento radice.
Solace,

22

Il android.R.id.contentvalore ID indica l' ViewGrouparea dell'intero contenuto di un Activity.

Può essere utilizzato 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();
        }
    }

    ...

}

Il codice sopra inserirà il Viewcreato da Fragmentnel ViewGroupidentificato da android.R.id.content.


9

I designer di Google sviluppano Android UX con linee guida di progettazione specifiche o consigliate. Il layout android.R.id.content definisce un linearlayout con alcuni attributi che Android ritiene essere un buon standard.

Pertanto, il caricamento della vista radice di un gestore di frammenti con android.R.id.content garantisce l'implementazione di queste linee guida.

NOTA: questo layout ha impostato l'attributo: android: addStatesFromChildren = "true" per consentire ai frammenti figlio di sovrascrivere gli attributi in questa rootview.

A partire dalla versione 19, android.R.id.content è definito in un file: 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">
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.