Android

AndroidのButtonの余分な高さを無くす方法

smartphone_button

AndroidアプリでButtonを実装する機会はとても多いでしょう。
アクティビティ遷移やイベントの発火など、その用途は多岐に渡りますし、レイアウトにも大きな影響を与える部品です。

しかし、そのデフォルトの微妙な高さを邪魔に思ったことはありませんか?
もう少し高さの幅が狭ければしっくりくるのに、と。

実はとても簡単にデフォルトの余分な高さを取り除くことができますよ。

Buttonのデフォルトの高さは48dp

Androidの標準のButtonこと、AppCompat.ButtonのminHeightは48dpです。
しかし、上下のインセットとして6dpが設定されているため、見た目上は36dpとなっています。

48dp – 6dp – 6dp = 36dp

ですね。
詳細はMATERIAL DESIGNのButtonのページを確認してください。

実際にデフォルトの高さを確認してみましょう。
まずは、以下のようにXMLファイルにButtonを設定します。

<Button
    android:id=“@+id/button1”
    android:layout_width=“wrap_content”
    android:layout_height=“wrap_content”
    android:text=“Button1”
    android:textSize=“12dp”/>

この場合は以下のように表示されます。

androidのbutton(デフォルト)

文字の高さとButtonの高さが合っていないですね。
Buttonの高さをもう少し低くできれば、バランスが良くなりそうです。

Buttonのデフォルトの高さの指定を解除する

それでは、Buttonのデフォルトの高さを低くしてみましょう。

方法は簡単です。
XMLファイルに「android:minHeight=“0dp”」を追加するだけです。
デフォルトのminHeightとして48dpが指定されているのであれば、それを上書きしてしまえば良いというわけですね。

参考:Android : Decreasing size of the Button

早速確認してみましょう。
XMLファイルを以下のように変更します。

<Button
    android:id=“@+id/button1”
    android:layout_width=“wrap_content”
    android:layout_height=“wrap_content”
    android:text=“Button1”
    android:textSize=“12dp”
    android:minHeight=“0dp”/>

<Button
    android:id=“@+id/button2”
    android:layout_width=“wrap_content”
    android:layout_height=“wrap_content”
    android:text=“Button2”
    android:textSize=“12dp”/>

この場合は以下のように表示されます。

androidのbutton(比較)

どうですか?
かなり違いますよね。

ちなみに、「BUTTON1」がminHeight=0dp、「BUTTON2」がデフォルト(minHeight=48dp)です。

終わりに

今回は、AndroidのButtonのデフォルトの高さを変更する方法をご紹介しました。
minHeightに0dpを指定するだけですので、とても簡単でしたね。
これでレイアウトの幅も広がりそうです。
以上です。それでは。