1. ホーム
  2. android

[解決済み] Androidの丸いボタン

2023-07-19 01:57:03

質問

Androidのプログラムで、丸みを帯びたボタンを作りたい。私は、以下のものを見てきました。 角丸のEditTextを作成する方法は?

私が実現したいことは

  1. 丸みを帯びたエッジのボタン
  2. オンクリックやフォーカスなど、状態に応じてボタンの背景や見た目を変更する。
  3. 背景には自作のPNGを使用し、シェイプを作成しない。

どのように解決するのですか?

ImageViewに頼らず、角丸ボタンを実現することができます。

背景セレクタのリソースです。 button_background.xml :

<?xml version="1.0" encoding="utf-8" ?> 
     <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <!--  Non focused states 
      --> 
      <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/button_unfocused" /> 
      <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/button_unfocused" /> 
     <!--  Focused states 
      --> 
      <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/button_focus" /> 
      <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/button_focus" /> 
     <!--  Pressed 
      --> 
      <item android:state_pressed="true" android:drawable="@drawable/button_press" /> 
    </selector>

各状態について、描画可能なリソース、例えばbutton_press.xmlを指定します。

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
  <stroke android:width="1dp" android:color="#FF404040" /> 
  <corners android:radius="6dp" /> 
  <gradient android:startColor="#FF6800" android:centerColor="#FF8000" android:endColor="#FF9700" android:angle="90" /> 
</shape>

この corners 要素に注目。これで角が丸くなります。

次に、ボタンに背景のdrawableを設定します。

android:background="@drawable/button_background"

EDIT (2018年9月) : 同じ手法で円形のボタンを作成することができます。 円は実際には、半径のサイズを正方形の辺の1/2に設定した正方形のボタンに過ぎません

さらに、上の例では strokegradient は必要な要素ではなく、単なる例であり、角丸の形状を確認するための方法です。