Risorsa layout

Una risorsa di layout definisce l'architettura dell'interfaccia utente in un Activity o un di una UI.

percorso del file:

res/layout/filename.xml
Il nome file viene utilizzato come ID risorsa.
tipo di dati della risorsa compilato:
Puntatore di risorsa a una risorsa View (o sottoclasse)
riferimento della risorsa:
In Java: R.layout.filename
In XML: @[package:]layout/filename
sintassi:
<?xml version="1.0" encoding="utf-8"?>
<ViewGroup
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@[+][package:]id/resource_name"
    android:layout_height=["dimension" | "match_parent" | "wrap_content"]
    android:layout_width=["dimension" | "match_parent" | "wrap_content"]
    [ViewGroup-specific attributes] >
    <View
        android:id="@[+][package:]id/resource_name"
        android:layout_height=["dimension" | "match_parent" | "wrap_content"]
        android:layout_width=["dimension" | "match_parent" | "wrap_content"]
        [View-specific attributes] >
        <requestFocus/>
    </View>
    <ViewGroup >
        <View />
    </ViewGroup>
    <include layout="@layout/layout_resource"/>
</ViewGroup>

Nota: l'elemento principale può essere un ViewGroup, View o <merge>, ma possono esserci solo un elemento radice e deve contenere l'attributo xmlns:android con android come mostrato nell'esempio di sintassi precedente.

elementi:
<ViewGroup>
Un contenitore per altri elementi View. Esistono molti diversi tipi di oggetti ViewGroup, e ognuno ti consente specificare il layout degli elementi secondari in vari modi. Diversi tipi di ViewGroup oggetti includono LinearLayout, RelativeLayout e FrameLayout.

Non dare per scontato che qualsiasi derivazione di ViewGroup accetta viste nidificate. Alcuni gruppi di visualizzazioni sono implementazioni della classe AdapterView, che determina i suoi figli solo da un Adapter.

Attributi:

android:id
ID risorsa. Un nome risorsa univoco per l'elemento, che puoi per ottenere un riferimento a ViewGroup dalla tua applicazione. Per ulteriori informazioni informazioni, consulta la sezione Valore per android:id.
android:layout_height
Dimensione o parola chiave. Obbligatorio. L'altezza del gruppo, espressa come il valore della dimensione (o risorsa dimensione) o una parola chiave ("match_parent" o "wrap_content"). Per ulteriori informazioni, vedi Valori per android:layout_height e nella sezione android:layout_width.
android:layout_width
Dimensione o parola chiave. Obbligatorio. La larghezza del gruppo, espressa come il valore della dimensione (o risorsa dimensione) o una parola chiave ("match_parent" o "wrap_content"). Per ulteriori informazioni, vedi Valori per android:layout_height e nella sezione android:layout_width.

ViewGroup supporta più attributi e molti altri sono supportati da ciascuna implementazione ViewGroup. Per un riferimento a tutti gli attributi disponibili, consulta la documentazione di riferimento corrispondente per la classe ViewGroup, ad esempio, il file LinearLayout XML personalizzati.

<View>
Un singolo componente dell'interfaccia utente, generalmente denominato widget. Diverso i tipi di oggetti View includono TextView, Button e CheckBox.

Attributi:

android:id
ID risorsa. Un nome risorsa univoco per l'elemento, che puoi utilizzare per ottenere un riferimento a View dalla tua applicazione. Per ulteriori informazioni informazioni, consulta la sezione Valore per android:id.
android:layout_height
Dimensione o parola chiave. Obbligatorio. L'altezza dell'elemento, come il valore di una dimensione (o risorsa dimensione) o una parola chiave ("match_parent" o "wrap_content"). Per ulteriori informazioni, vedi Valori per android:layout_height e nella sezione android:layout_width.
android:layout_width
Dimensione o parola chiave. Obbligatorio. La larghezza dell'elemento, come il valore di una dimensione (o risorsa dimensione) o una parola chiave ("match_parent" o "wrap_content"). Per ulteriori informazioni, vedi Valori per android:layout_height e nella sezione android:layout_width.

View supporta più attributi e molti altri sono supportati da ciascuna implementazione View. Per ulteriori informazioni, consulta la sezione Layout. Per un riferimento a tutti gli attributi disponibili, consulta la relativa documentazione di riferimento, ad esempio gli attributi XML di TextView.

<requestFocus>
Qualsiasi elemento che rappresenta un oggetto View può includere questo elemento vuoto, che consente all'elemento principale di concentrarsi sullo schermo. Puoi avere solo uno di questi per file.
<include>
Include un file di layout in questo layout.

Attributi:

layout
Risorsa di layout. Obbligatorio. Riferimento a un layout risorsa.
android:id
ID risorsa. Sostituisce l'ID assegnato alla vista principale nel layout incluso.
android:layout_height
Dimensione o parola chiave. Sostituisce l'altezza assegnata alla vista principale nella layout incluso. In vigore solo se viene dichiarato anche android:layout_width.
android:layout_width
Dimensione o parola chiave. Sostituisce la larghezza assegnata alla vista principale nella layout incluso. In vigore solo se viene dichiarato anche android:layout_height.

Puoi includere qualsiasi altro attributo di layout in <include> che sia supportati dall'elemento principale nel layout incluso e sostituiscono quelli definiti nei principale.

Attenzione: se vuoi sostituire gli attributi di layout utilizzando il tag <include>, devi sostituire entrambi android:layout_height e android:layout_width in ordine per altri attributi di layout.

Un altro modo per includere un layout è usare ViewStub, uno strumento leggero che non occupa spazio di layout finché non viene gonfiata in modo esplicito. Quando lo fai, include una file di layout definito dal relativo attributo android:layout. Per ulteriori informazioni sull'utilizzo di ViewStub, leggi Caricare di visualizzazioni on demand.

<merge>
Un elemento principale alternativo non tracciato nella gerarchia del layout. Usa questo come l'elemento principale è utile quando sai che questo layout è inserito in un layout che contiene già l'elemento View principale appropriato per contenere gli elementi secondari dei Elemento <merge>.

Ciò è particolarmente utile quando prevedi di includere questo layout in un altro file di layout utilizzando <include> e questo layout non richiede un contenitore ViewGroup diverso. Per ulteriori informazioni informazioni sull'unione dei layout, leggi Riutilizzare i layout con <include>.

Valore per android:id

Per il valore ID, in genere viene utilizzato questo formato di sintassi: "@+id/name", come mostrato nell'esempio seguente. La il simbolo più, +, indica che si tratta di un nuovo ID risorsa e lo strumento aapt crea Un nuovo numero intero della risorsa nella classe R.java, se non esiste già.

<TextView android:id="@+id/nameTextbox"/>

Il nome nameTextbox è ora un ID risorsa associato a questo elemento. Puoi quindi fai riferimento al TextView a cui l'ID è associato in Java:

Kotlin

val textView: TextView? = findViewById(R.id.nameTextbox)

Java

TextView textView = findViewById(R.id.nameTextbox);

Questo codice restituisce l'oggetto TextView.

Tuttavia, se hai già definito una risorsa ID, che non è già utilizzato, puoi applicare questo ID a un elemento View escludendo nel valore android:id.

Valori per android:layout_height e android:layout_width

I valori di altezza e larghezza sono espressi utilizzando uno qualsiasi dei dimensione unità supportate da Android (px, dp, sp, pt, in, mm) o con le seguenti parole chiave:

ValoreDescrizione
match_parent Consente di impostare la dimensione in modo che corrisponda a quella dell'elemento principale. Aggiunto nel livello API 8 a ritira fill_parent.
wrap_content Imposta la dimensione solo sulla dimensione richiesta per adattarsi ai contenuti di questo elemento.

Elementi di visualizzazione personalizzati

Puoi creare View e ViewGroup personalizzati e applicarli al tuo layout come faresti con un layout standard . Puoi anche specificare gli attributi supportati nell'elemento XML. Per ulteriori informazioni, consulta Creare componenti vista personalizzati.

esempio:
File XML salvato alle ore res/layout/main_activity.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical" >
    <TextView android:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
    <Button android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello, I am a Button" />
</LinearLayout>

Questo codice dell'applicazione carica il layout per un Activity in Metodo onCreate():

Kotlin

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
}
vedi anche: