Die Anleitung zu Android Button

View more Tutorials:

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.
  • TODO Link!

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 t rue 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();
        }
    }

}

View more Tutorials: