Button
Одним із часто використовуваних елементів є кнопки, які представлені класом android.widget.Button. Ключовою особливістю кнопок є можливість взаємодії з користувачем через натискання.
Основні атрибути кнопок:
text: задає текст на кнопці.textColor: задає колір тексту на кнопці.background: задає фоновий колір кнопки.textAllCaps: при значенніtrueвстановлює текст у верхньому регістрі. За замовчуванням використовується значенняtrue.onClick: задає обробник натискання кнопки.
Отже, змінимо код у файлі 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"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textSize="34sp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"/>
<EditText
android:id="@+id/editText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:hint="Введите имя"
app:layout_constraintTop_toBottomOf="@+id/textView"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ввод"
android:onClick="sendMessage"
app:layout_constraintTop_toBottomOf="@+id/editText"
app:layout_constraintLeft_toLeftOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
За допомогою атрибута android:onClick можна задати метод у коді java, який оброблятиме натискання кнопки. Так, у вищенаведеному прикладі це метод sendMessage. Тепер перейдемо до коду MainActivity і пропишемо в ньому такий метод:
package com.example.viewapp;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// Обработка нажатия кнопки
public void sendMessage(View view) {
TextView textView = findViewById(R.id.textView);
EditText editText = findViewById(R.id.editText);
textView.setText("Добро пожаловать, " + editText.getText());
}
}
При створенні методу обробки натискання слід враховувати наступні моменти:
- Метод повинен оголошуватися з модифікатором
public. - Повинен повертати значення
void. - Як параметр приймати об'єкт
View. Цей об'єктViewі є натиснутою кнопкою.
У цьому випадку після натискання на кнопку в TextView виводиться текст із EditText.

Аналогічний приклад повністю в коді MainActivity:
package com.example.viewapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
ConstraintLayout constraintLayout = new ConstraintLayout(this);
textView = new TextView(this);
textView.setId(View.generateViewId());
ConstraintLayout.LayoutParams textViewLayout = new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.WRAP_CONTENT
);
textViewLayout.topToTop = ConstraintLayout.LayoutParams.PARENT_ID;
textViewLayout.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
textViewLayout.rightToRight = ConstraintLayout.LayoutParams.PARENT_ID;
textView.setLayoutParams(textViewLayout);
constraintLayout.addView(textView);
editText = new EditText(this);
editText.setId(View.generateViewId());
editText.setHint("Введите имя");
ConstraintLayout.LayoutParams editTextLayout = new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, ConstraintLayout.LayoutParams.WRAP_CONTENT
);
editTextLayout.topToBottom = textView.getId();
editTextLayout.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
editTextLayout.rightToRight = ConstraintLayout.LayoutParams.PARENT_ID;
editText.setLayoutParams(editTextLayout);
constraintLayout.addView(editText);
Button button = new Button(this);
button.setText("Ввод");
ConstraintLayout.LayoutParams buttonLayout = new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT
);
buttonLayout.topToBottom = editText.getId();
buttonLayout.leftToLeft = ConstraintLayout.LayoutParams.PARENT_ID;
button.setLayoutParams(buttonLayout);
constraintLayout.addView(button);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Обробка натискання
textView.setText("Добро пожаловать, " + editText.getText());
}
});
setContentView(constraintLayout);
}
}
При програмному створенні кнопки ми можемо визначити у неї слухач натискання View.OnClickListener і за допомогою його методу onClick також обробити натискання:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Обробка натискання
}
});
