codestory

Die Anleitung zu Android Button

  1. Android Button
  2. Button Click Event
  3. Button Long Click Event
  4. Zum Beispiel: Android Button

1. Android Button

In Android ist Button ein "Steuerelement vom Benutzer-Interface" (user interface control), mit dem eine Aktion ausgeführt wird, wenn der Benutzer darauf klickt.
In der Klassenhierarchie ist Button eine Unterklasse von TextView, sodass alle Funktion einer TextView geerbt werden.
android:textAllCaps
Standardmäßig wird beim Anzeigen von Inhalten der Text von Button in Großbuchstaben (uppercase) umgewandelt. Daher sollten Sie android:textAllCaps="false" setzen um sicherzustellen, dass der Textinhalt korrekt als Original angezeigt wird.
<Button
    android:id="@+id/button3"
    android:text="Alarm"
    android:drawableLeft="@drawable/icon_alarm"
    android:textAllCaps="false"
    ... />
android:gravity
Das Attribut android:gravity wird benutzt um die Position der Textanzeige einer Button festzulegen. Der Wert ist die Kombination der folgenden Werten:
Constant in Java
Value
Description
Gravity.LEFT
left
Gravity.CENTER_HORIZONTAL
center_horizontal
Gravity.RIGHT
right
Gravity.CLIP_HORIZONTAL
clip_horizontal
Gravity.FILL_HORIZONTAL
fill_horizontal
Gravity.TOP
top
Gravity.CENTER_VERTICAL
center_vertical
Gravity.BOTTOM
bottom
Gravity.CLIP_VERTICAL
clip_vertical
Gravity.FILL_VERTICAL
fill_vertical
Gravity.START
start
Gravity.END
end
Gravity.CENTER
center
Gravity.FILL
fill
<Button
    android:id="@+id/button"
    android:gravity="center_horizontal|top"
    android:text="Text"
    ... />
Icon - android:drawableLef, android:drawableTop,..
Mit Android können Sie 4 Symbole in einem Button über die Attribute android:drawableLef, android:drawableTop, android:drawableRight, android:drawableBottom, android:drawableStart, android:drawableEnd hinfügen.
<Button
    android:id="@+id/button"
    android:drawableLeft="@drawable/icon_bus"
    android:drawableTop="@drawable/icon_railway"
    android:drawableRight="@drawable/icon_car"
    android:drawableBottom="@drawable/icon_boat"
    android:text="Text"
    ...  />
Android 4.1 begann, die Unterschiede im Textlayout zwischen verschiedenen Sprachen zu untersützen. Im Englishen wird der Text von links nach rechts geschrieben, während der Text in arabischen Sprachen von rechts nach links geschrieben wird.
LTR (Left to Right)
Im Modus LTR (Left to Right): Das Attribut android:drawableStart funktioniert wie das Attribut android:drawableLeft, und android:drawableEnd funktioniert genauso wie das Attribut android:drawableRight.
RTL (Right to Left)
Im Modus RTL (Right to Left): Das Attribut android:drawableStart funktioniert wie das Attribut android:drawableRight, und das Attribut android:drawableEnd funktioniert wie das Attribut android:drawableStart.
  • Android LTR, RTL Support

2. Button Click Event

Das Ereignis Click tritt auf, nachdem der Benutzer die Button gedrückt (Press down) und losgelassen (Release) hat.
Mit dem Attribut android.onClick können Sie den Name der Methode definieren, die aufgerufen wird, wenn der Benutzer auf die Button klickt.
<Button
    android:id="@+id/button_clickMe"
    android:onClick="onClickHandler"
    android:text="Click Me"
    ... />
Erstellen Sie diese Methode gleichzeigtig in die Klasse MainActivity.
// MainActivity

public void onClickHandler(View view)  {
    Toast.makeText(this, "You click on 'Click Me' button!", Toast.LENGTH_SHORT).show();
}
Sie können die Methode definieren, die aufgerufen wird, wenn der Benutzer mit Java Code auf die Button klickt:
this.buttonClickMe = (Button) this.findViewById(R.id.button_clickMe);

this.buttonClickMe.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(MainActivity.this, "You click on 'Click Me' button!", Toast.LENGTH_SHORT).show();
    }
});

3. Button Long Click Event

Die Ereignisse Long Click (langer Klick) im Android treten auf, wenn der Benutzer View lange gedrückt hält. Insbesondere tritt das Ereignis in der Zeitpunkt LONG_PRESS_TIMEOUT Milisekunde auf seit der Benutzer es gedrückt hat. Sie können den Wert von LONG_PRESS_TIMEOUT über die Methode ViewConfiguration.getLongPressTimeout() abrufen.
Die Standarddauer eines Long-Click im Android ist DEFAULT_LONG_PRESS_TIMEOUT Milisekunden. Der Benutzer kann die Dauer des Long-Click in Settings vom Gerät, die für alle Anwendungen in System angewendet werden. Die Anwendungsentwickler können diesen Wert nicht ändern.
Constant
(private)
Method
Value
(Milliseconds)
DEFAULT_LONG_PRESS_TIMEOUT
500
ViewConfiguration.getLongPressTimeout()
500 (default)
Zum Beispiel: Die Behandlung des Ereignisses wenn der Benutzer mit Code Java einen Long Click in einer Button macht (Beachten Sie, dass dies mit XML nicht möglich ist).
this.buttonClickMe = (Button) this.findViewById(R.id.button_clickMe);


this.buttonClickMe.setOnLongClickListener(new View.OnLongClickListener() {
    @Override
    public boolean onLongClick(View v) {
        Toast.makeText(MainActivity.this, "You long click on 'Click Me' button!", Toast.LENGTH_SHORT).show();
        return true;
    }
});
Wenn der Benutzer längere Zeit auf View klickt (länger als LONG_PRESS_TIMEOUT Milisekunden), kann diese Aktion zwei aufeinanderfolgende Ereignisse Long-Click und Click generieren.
Die Methode onLongClick(View) gibt einen Wert boolean zurück. Die Rückgabe von true bedeutet, dass Sie das Ereignis Long-Click verwendet haben und das danach auftretende Ereignis Click ignoriert wird. Wenn anderenfalls die Methode onLongClick(View) den falschen Wert von false zurückgibt, bedeutet das, dass das anschließend auftretende Ereignis Click ausgeführt wird.

4. Zum Beispiel: Android Button

Hier ist ein einfaches Beispiel, der Benutzer wird zwei Zahlen eingeben und klickt auf Button um diese zwei Zahlen zu summieren.
Entwerfen Sie die Interface des Beispiel:
Richten Sie die Komponenten in die Interface ein:
Legen Sie ID, Text für die Komponenten in die Interface fest:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textView"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Number 1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <EditText
        android:id="@+id/editText_number1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:ems="10"
        android:inputType="number"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:text="Number 2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText_number1" />

    <EditText
        android:id="@+id/editText_number2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:ems="10"
        android:inputType="number"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView2" />

    <Button
        android:id="@+id/button_add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:text="Add"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/editText_number2" />
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package org.o7planning.buttonexample;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.view.ViewConfiguration;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private EditText editTextNumber1;
    private EditText editTextNumber2;
    private Button buttonAdd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.editTextNumber1 = (EditText) this.findViewById(R.id.editText_number1);
        this.editTextNumber2 = (EditText) this.findViewById(R.id.editText_number2);

        this.buttonAdd = (Button) this.findViewById(R.id.button_add);

        this.buttonAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                add2Number();
            }
        });
    }


    private void add2Number()  {
        String str1 = this.editTextNumber1.getText().toString();
        String str2 = this.editTextNumber2.getText().toString();
        try {
            double value1 = Double.parseDouble(str1);
            double value2 = Double.parseDouble(str2);

            double result = value1 + value2;

            Toast.makeText(this, "Result: " + result, Toast.LENGTH_SHORT).show();
        } catch(Exception e)  {
            Toast.makeText(this, "Error: "+ e, Toast.LENGTH_SHORT).show();
        }
    }

}

Anleitungen Android

Show More