In diesem Kapitel dreht sich alles um die Anzeige und Eingabe von Text. Die im Folgenden erstellte Beispiel-App gibt einen Überblick über Funktionsweisen der Android Klassen TextView und EditText zum Anzeigen bzw. Eingeben von Text.

Die Android TextView Klasse

Zum Anzeigen von Text werden Elemente vom Typ TextView verwendet. Zu den am häufigsten verwendeten XML Eigenschaften der Klasse TextView zählen:

android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/app_name" 
android:textSize="20sp"
android:textColor="#b00030" 
android:autoLink="all"  
  • android:layout_width und android:layout_height
    Die Breite und Höhe muss für jedes Steuerelement angegeben werden.
  • android:text=“@string/app_name“
    Setzt den anzuzeigenden Text. Um das Übersetzen der App zu vereinfachen, sollte Text wie im obigen Beispiel aus den String Ressourcen verwendet werden.
  • android:textSize=“20sp“
    Konfiguriert eine Schriftgröße von 20 Scale-independent Pixels. Für die Größenangabe von Text sollte immer die Einheit sp verwendet werden. Dadurch wird die Größe des Textes abhängig von der Auflösung und Pixeldichte des Bildschrims sowie von den Textanzeigeoptionen des Benutzers angepasst.
  • android:textColor=“#b00030″
    Setzt die Textfarbe.
  • android:autoLink=“all“
    Wandelt Text automatisch in Links (Web, Email, Telefonnummern und Maps-Koordinaten) um.

Die Android EditText Klasse

Zur Texteingabe wird das EditText Steuerelement verwendet. Zu dessen wichtigsten Eigenschaften zählen:

android:text="@string/hello_world"
android:hint="@string/hinweis"
android:ems="10"
android:gravity="right|bottom"
android:inputType="text"
  • android:text=“@string/hello_world“
    Setzt den Text des EditText Elements.
  • android:hint=“@string/hinweis“
    Der über hint angegebene Text verschwindet, sobald im EditText Element ein Text gesetzt wird.
  • android:ems=“10″
    Macht des EditText Feld so breit, dass genau zehnmal der Buchstabe ‚M‘ angezeigt werden kann. Der Parameter ems setzt android:layout_width=“wrap_content“ voraus.
  • android:layout_gravity=“right|bottom“
    Legt die Position des Textes innerhalb des EditText-Feldes fest. Im obigen Beispiel erscheint der Text in der rechten unteren Ecke des EditText Feldes.
  • android:inputType=“number“
    Über inputType kann die Eingabe gefiltert werden. Außerdem wirkt sich die Einstellung auf das angezeigte Keyboard aus.

Um Text aus einem EditText Eingabefeld zu lesen, wird die Methode getText() wie im folgendem Beispiel verwendet.

EditText text = (EditText) findViewById(R.id.editText1);
text.getText().toString();

Da getText() ein Objekt vom Typ Editable liefert, muss auf den eingegebenen Text über die Methode toString() zugegriffen werden.

App Beispiel: Kopieren von EditText zu TextView

Android TextView und Android EditText Beispiel AppIm folgendem wird eine kurze Android Beispiel App erstellt, die den in einem EditText Steuerelement eingegebenen Text mittels einer TextView anzeigt.

  1. Erstellen Sie bitte ein neues Android Application Project in Eclipse. Vergeben Sie bitte den Namen TextBeispiel und wählen Sie ein Activity vom Typ Empty Activity.
  2. Fügen Sie dem Layout des Activity ein EditText Feld hinzu und belassen sie dessen id bei @+id/editText1 und setzen Sie den Parameter inputType auf text.
    Setzen Sie dem bereits vorhandenen TextView Element die ID @+id/textView1
    Das Endergebnis sollte diesem Beispiel ähnlich sein:
     
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="${relativePackage}.${activityClass}" >
     
        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:ems="10"
            android:inputType="text" />
     
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_above="@+id/editText1"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="96dp"
            android:text="@string/hello_world" />
     
    </RelativeLayout>
    
  3. Im letzten Schritt wird die Datei MainActivity.java so erweitert, dass nach einer Texteingabe der Text aus dem EditText Feld in das TextView Element geschrieben wird.
    
    package com.example.edittext;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.text.Editable;
    import android.text.TextWatcher;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		final TextView textView = (TextView) findViewById(R.id.textView1);
    		final EditText editText = (EditText) findViewById(R.id.editText1);
    		
    		editText.addTextChangedListener(new TextWatcher() {
    			
    			@Override
    			public void onTextChanged(CharSequence s, int start, int before, int count) {
    			}
    			
    			@Override
    			public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    			}
    			
    			@Override
    			public void afterTextChanged(Editable s) {
    				textView.setText(editText.getText().toString());
    			}
    		});	
    	}
    }
    

    Hier geschieht folgendes:

    • In Zeile 20 wird dem EditText Feld ein TextChangedListener hinzugefügt, woraufhin die App von Texteingaben mittels den Methoden onTextChanged(), beforeTextChanged() und afterTextChanged() informiert wird.
    • In Zeile 32, wird der Text aus dem EditText Feld gelesen und an die TextView übergeben. Auferufen wird die Methode afterTextChanged() jedes Mal nachdem sich der Text des EditText Feldes geändert hat.