質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

2回答

5515閲覧

Selectorを使用したボタンの背景色変更について

take.

総合スコア15

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

1クリップ

投稿2017/02/28 14:19

編集2017/02/28 14:21

Selectorを使用してボタンクリック時・フォーカス時・通常時の背景色を変更したいと思っています。

通常時とクリック時は指定の色で表示されますが、フォーカス時に色が変わりません。

何がいけないのでしょうか?

selector_button.xml

1<?xml version="1.0" encoding="utf-8"?> 2<selector xmlns:android="http://schemas.android.com/apk/res/android"> 3 <item android:state_pressed="true"> 4 <shape android:shape="rectangle"> 5 <corners 6 android:radius="15dip"/> 7 <gradient 8 android:startColor="#FFFF0000" 9 android:endColor="#FFFF0000" 10 android:angle="45"/> 11 <padding 12 android:left="15dip" 13 android:top="15dip" 14 android:right="15dip" 15 android:bottom="15dip"/> 16 </shape> 17 </item> 18 <item android:state_focused="true"> 19 <shape android:shape="rectangle"> 20 <corners 21 android:radius="15dip"/> 22 <gradient 23 android:startColor="#FF00FF00" 24 android:endColor="#FF00FF00" 25 android:angle="45"/> 26 <padding 27 android:left="15dip" 28 android:top="15dip" 29 android:right="15dip" 30 android:bottom="15dip"/> 31 </shape> 32 </item> 33 <item> 34 <shape android:shape="rectangle"> 35 <corners 36 android:radius="15dip"/> 37 <gradient 38 android:startColor="#FF0000FF" 39 android:endColor="#FF0000FF" 40 android:angle="45"/> 41 <padding 42 android:left="15dip" 43 android:top="15dip" 44 android:right="15dip" 45 android:bottom="15dip"/> 46 </shape> 47 </item> 48</selector>

activity_main.xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.example.uidesign.MainActivity"> 11 12 13 <Button 14 android:background="@drawable/rounded_button" 15 android:layout_width="300dp" 16 android:layout_height="300dp"/> 17 18</LinearLayout>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Buttonのフォーカスはマウスやトラックボールによるカーソルのマウスオーバー、Javaコードで特定の処理を行わない限り発生しなかったと思いますが、そのようなことをしていますか?
なにかしているならその方法を具体的に書いてください、また何もしていないならどのようなユーザー操作でフォーカスがあたるとおもっているのかを具体的に書いてください。

投稿2017/02/28 16:54

編集2017/02/28 16:55
yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

take.

2017/03/01 12:10

個別の処理が必要なんですね。勉強になりました。 特に特定処理に該当する処理は書いておらず、Buttonフォーカス時の動作が必須でもないため、 今回はフォーカス時の処理は行わないようにします。
guest

0

フォーカス時に色が変わりません

結論というか、個人的には積極的には使いたくないですね

フォーカスできるようにすると面倒なことも多いので使えないほうがいい
ボタンがトップにあると最初からフォーカスされてしまうので

デフォルトのボタンのようにあまりわからない感じにするとか

フォーカスを使えるようにするには
stateをそれぞれしっかり規定するか

xml

1<?xml version="1.0" encoding="utf-8"?> 2<selector 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <item 5 android:state_focused="false" 6 android:state_pressed="false" 7 android:state_selected="false" 8 > 9 <shape 10 ... 11 </shape> 12 </item> 13 <item 14 android:state_pressed="true" 15 android:state_focused="false" 16 android:state_selected="false" 17 /> 18 <shape 19 ... 20 </shape> 21 <item 22 android:state_focused="true" 23 android:state_pressed="false" 24 android:state_selected="false" 25 /> 26 <shape 27 ... 28 </shape> 29</selector>

android:state_selectedはなくてもいいかもしれませんが

あるいはfocusを最初に持ってきておくとか

xml

1<?xml version="1.0" encoding="utf-8"?> 2<selector 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <item android:state_focused="true"> 5 ... 6 </item> 7 <item android:state_pressed="true"> 8 ... 9 </item> 10 <item> 11 ... 12 </item> 13</selector>

失礼しました
以上はemulatorでのtabを使ったフォーカス変更で有効になります

タッチでもフォーカスは

xml

1android:focusable="true" 2android:focusableInTouchMode="true" 3 4<requestFocus />

の追加でenableになります
これを動的にやるためにはコード側での操作も必要となりそうです

Buttonのフォーカスはマウスやトラックボールによるカーソルのマウスオーバー、Javaコードで特定の処理を行わない限り発生しなかったと思いますが、そのようなことをしていますか?

そうですね、yonaさんの指摘の通り
普通ではフォーカスはあまり考えられないので
Bluetooth keyboardなどの特別なケースでしょう

投稿2017/03/01 04:55

編集2017/03/01 05:21
aja

総合スコア3733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問