[解決済み] Androidの丸いボタン
2023-07-19 01:57:03
質問
Androidのプログラムで、丸みを帯びたボタンを作りたい。私は、以下のものを見てきました。 角丸のEditTextを作成する方法は?
私が実現したいことは
- 丸みを帯びたエッジのボタン
- オンクリックやフォーカスなど、状態に応じてボタンの背景や見た目を変更する。
- 背景には自作の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に設定した正方形のボタンに過ぎません
さらに、上の例では
stroke
と
gradient
は必要な要素ではなく、単なる例であり、角丸の形状を確認するための方法です。
関連
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] Bitmapオブジェクトに画像を読み込む際にOutOfMemoryが発生する問題
-
[解決済み] Android標準のボタンを色違いに
-
[解決済み] CSS3のborder-radiusプロパティとborder-collapse:collapseが混ざらないのですが。border-radiusを使用して、角を丸くした折りたたみテーブルを作成するにはどうすればよいですか?
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
-
[解決済み】AndroidでTextViewのfontFamilyを変更する方法
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] google-services.jsonって実際何してるの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ボタンの角を丸くするには?
-
[解決済み】角丸のEditTextを作成する方法は?[クローズド]
-
[解決済み] BottomSheetDialogFragmentの状態をexpandedに設定する。
-
[解決済み] Androidのソースコードにある@hideの意味とは?
-
[解決済み] Androidでマイナスマージンを使用するのは悪いことですか?
-
[解決済み] Android Studioの「未実装メソッドの追加」機能
-
[解決済み] Android端末がHDPI画面かMDPI画面かを確認する方法は?
-
[解決済み] google-services.jsonって実際何してるの?
-
[解決済み] Androidの環境設定。ユーザーが環境設定画面を使用していない場合、デフォルト値を読み込むにはどうすればよいですか?
-
[解決済み] ViewPager2でスワイプを無効にするには?