4.2. Практический урок 2. Использование контейнеров.

В этом уроке рассмотрены контейнеры ScrollView и LinearLayout и виджеты TextView, ImageView, Button, ImageButton и привязка обработчиков для выполнения каких-нибудь действий при клике на кнопки

1. Создайте новый проект на основе шаблона Empty Activity.

2. В файле activity_main.xml напишите этот код:

<?xml version="1.0" encoding="utf-8"?>
<!-- ScrollView служит для показа содержимого, который не помещается на одном экране. Внутри ScrollView должен быть один вложенный контейнер или виджет. Ограничений для вложенных виджетов в контейнеры нет.-->
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!--LinearLayout с вертикальной ориентацией необходим для размещения виджетов по вертикали (сверху вниз)-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
        <!--LinearLayout с горизонтальной ориентацией необходим для размещения виджетов по горизонтали (слева на право)-->
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Text 1" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Text 2" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Text 3" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Text 4" />

        </LinearLayout>

        <!-- Виджет Button добавляет кнопку в интерфейс на кнопке можно показывать текст и присвоить обработчик нажатия на кнопку для выполнения необходимых действий -->
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Click me" />

        <!-- ImageButton аналочен Button-у только вместо текста показывает изображение. Привязка обработчика при нажатии на кнопку указан через атрибут onClick и функция обработки нажатия на кнопку написана в классе MainActivity с названием Func1-->
        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="Func1"
            android:src="@mipmap/ic_launcher" />

        <!-- Атрибут adjustViewBounds="true" необходимо указывать, когда пиксельный размер изображения может быть больше чем экран. Если не указывать, ширина подгоняется под ширину экрана  а высоте указывается пропорциональное значение, но вокруг виджета могут появиться пустые пространства равные оригинальной высоте или ширине объекта. -->
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:adjustViewBounds="true"
            android:src="@drawable/img1" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello World!"
            android:textSize="80sp" />

    </LinearLayout>
</ScrollView>

3. Макет готов, теперь необходимо написать код класса Activity, для обработки нажатия на кнопки – экземпляры класса Button и ImageButton.

public class ActivityMain extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Получаем ссылку на кнопку - экземпляр класса Button
        Button btn = findViewById(R.id.button);
        // Указание обработчика нажатия на кнопку.
        btn.setOnClickListener(new View.OnClickListener() {
            // Код выполняемый при нажатии на кнопку
            @Override
            public void onClick(View v) {
                // Toast показывает всплывающие сообщения, которые через короткий промежуток времени исчезают автоматически
                Toast.makeText(ActivityMain.this, "Hello from toast", Toast.LENGTH_LONG).show();
            }
        });
    }

    // Функция с кодом для обработки клика на кнопку ImageButton, название этой функции указана в файле макета в качестве значения атрибута onClick
    public void Func1(View v) {
        Toast.makeText(this, "Hello from second toast", Toast.LENGTH_SHORT).show();
    }
}
Проект готов, запустите и посмотрите на результат.