アプリにボタンを追加する

Compose を試す
Jetpack Compose は、Android に推奨される UI ツールキットです。Compose にコンポーネントを追加する方法を学習します。
<ph type="x-smartling-placeholder"></ph> ボタン →

ボタンはテキスト、アイコン、またはその両方で構成され、ユーザーが操作を行ったときに行われるアクションを伝える タップします。

<ph type="x-smartling-placeholder">

レイアウト内にボタンを作成するには、 テキスト、アイコン、またはその両方のボタンを希望する場合、次のように記述します。

  
  <LinearLayout 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"
      android:paddingLeft="16dp"
      android:paddingRight="16dp"
      android:orientation="vertical" >
  
      <Button
          android:id="@+id/supabutton"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="I'm a button" />
  
      <ImageButton
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:contentDescription="A tiny Android icon"
          android:src="@drawable/baseline_android_24"
          app:tint="#ff0000" />
  
      <Button
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:drawableStart="@drawable/baseline_android_24"
          android:drawablePadding="4dp"
          android:drawableTint="#ff0000"
          android:text="I'm a button with an icon" />
  </LinearLayout>

上記のコードにより、次のような内容が生成されます。

3 種類のボタンを示す画像
図 1. 3 つのスタイルのボタン。

クリック イベントに応答する

ユーザーがボタンをタップすると、 Button オブジェクトは on-click イベントによって定義されます。

イベント ハンドラをプログラムで宣言するには、 View.OnClickListener 呼び出してボタンに割り当てます。 setOnClickListener(View.OnClickListener), 次に例を示します。

Kotlin

findViewById<Button>(R.id.supabutton)
  .setOnClickListener {
      Log.d("BUTTONS", "User tapped the Supabutton")
  }

Java

Button button = (Button) findViewById(R.id.supabutton);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
      Log.d("BUTTONS", "User tapped the Supabutton");
    }
});

ボタンのスタイルを設定する

ボタンの外観(背景画像とフォント)はデバイスによって異なります。 デバイスのメーカーによって入力のデフォルト スタイルが異なることが多いため、 できます。

個々のボタンを異なる背景でカスタマイズするには、 android:background 属性 ドローアブルやカラーリソースを使用します。または、ボタンにスタイルを適用することもできます。 これは HTML スタイルと同様に機能し、背景、スタイル、プロパティなど、 追加できますスタイルの適用について詳しくは、 スタイルとテーマ

枠線なしボタン

便利なデザインの 1 つに「枠線なし」のボタンがあります。枠線のないボタンは基本的なボタンに似ています 枠線や背景はありませんが、状態に応じて外観が変わります。 認識できます。

枠線なしボタンを作成するには、 borderlessButtonStyle スタイルをボタンに追加してください。

<Button
  android:id="@+id/supabutton"
  style="?android:attr/borderlessButtonStyle"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="I'm a button" />

カスタムの背景

ボタンの外観を再定義したい場合は、カスタム背景を指定できます。 ただし、単純なビットマップや色を指定するのではなく、背景を状態リストにする必要があります。 ボタンの現在の状態に応じて外観が変化するリソースです。

状態リストは XML ファイルで定義できます。このリストでは、 さまざまなボタンの状態を確認できます。

ボタンの背景に状態リスト ドローアブルを作成する手順は次のとおりです。

  1. ボタンの背景としてデフォルトを表す 3 つのビットマップ、タップされたビットマップ、フォーカスされているビットマップを作成する 表示できます。画像がさまざまなサイズのボタンに収まるようにするには、ビットマップを次のように作成します。 9-patch ビットマップ。
  2. ビットマップをプロジェクトの res/drawable/ ディレクトリに配置します。各ビットマップに名前を付ける (button_default.9.png など)が表すボタンの状態を反映します。 button_pressed.9.pngbutton_focused.9.png
  3. res/drawable/ ディレクトリに新しい XML ファイルを作成します。次のような名前を付けます。 button_custom.xml。次のような XML を挿入します。
    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:drawable="@drawable/button_pressed"
              android:state_pressed="true" />
        <item android:drawable="@drawable/button_focused"
              android:state_focused="true" />
        <item android:drawable="@drawable/button_default" />
    </selector>
    

    現在の状態に基づいて画像を変更する単一のドローアブル リソースが定義されます。 クリックします。

    • 最初の <item> では、ボタンがタップされたときに使用するビットマップを定義します。 (アクティブ)。
    • 2 つ目の <item> では、ボタンがフォーカスされたときに使用するビットマップを定義します。 ボタンの強調表示にすることができます。
    • 3 つ目の <item> では、ボタンがデフォルトにある場合に使用するビットマップを定義します。 タップでもフォーカスされた状態でもない状態です。
    で確認できます。 <ph type="x-smartling-placeholder">

    この XML ファイルは、単一のドローアブル リソースを表します。Button から参照される場合、 ボタンの状態に応じて表示される画像が変化します。

  4. ドローアブル XML ファイルをボタンの背景として適用します。
    <Button
        android:id="@+id/button_send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send"
        android:onClick="sendMessage"
        android:background="@drawable/button_custom"  />
    

無効にするボタンの定義方法など、この XML 構文の詳細については、 表示されていない場合は、 StateListDrawable