27

ボタンがクリックされた後もボタンの背景を特定の色のままにし、他のボタンが押されたときに再び色を変更したいのですが。これは「state_focused」状態だと思いました。

しかし、ボタンが押されているか押されていないかの2つの状態しかありません。

state_focusedの状態を正しく理解していますか、それともStateListDrawable(以下を参照)が間違っていますか?

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="true" android:state_pressed="false"><shape>
            <solid android:color="#00ff00" />
        </shape></item>
    <item android:state_pressed="true"><shape>
            <solid android:color="#ff0000" />
        </shape></item>
    <item><shape>
            <solid android:color="#0000ff" />
        </shape></item>

</selector>
4

5 に答える 5

45

state_focusedボタンが dpad またはトラックボールの使用にフォーカスされているときはいつでもです。通常、タッチを使用している場合、ビューはフォーカスされた状態を示しません。

于 2012-01-13T15:01:00.303 に答える
35

ボタンの状態の例を次に示します。

ここに画像の説明を入力

フォント: http://developer.android.com/design/style/touch-feedback.html

于 2012-01-13T15:00:40.123 に答える
18

https://developer.android.com/guide/topics/resources/drawable-resource.html

android:state_pressed
ブール値。オブジェクトが押されたとき (ボタンがタッチ/クリックされたときなど) にこの項目を使用する場合は "true"。このアイテムをデフォルトの押されていない状態で使用する必要がある場合は「false」。

android:state_focused
ブール値。オブジェクトに入力フォーカスがある場合 (ユーザーがテキスト入力を選択した場合など) にこのアイテムを使用する場合は「true」。このアイテムをデフォルトのフォーカスされていない状態で使用する必要がある場合は「false」。

android:state_hovered
ブール値。オブジェクトがカーソルによってホバーされているときにこのアイテムを使用する必要がある場合は「true」。この項目をデフォルトの非ホバー状態で使用する場合は「false」。多くの場合、このドローアブルは、「フォーカス」状態に使用されるドローアブルと同じである可能性があります。
API レベル 14 で導入されました。

android:state_selected
ブール値。方向コントロールで移動するとき (方向パッドでリストを移動するときなど)、オブジェクトが現在のユーザー選択である場合に、この項目を使用する必要がある場合は "true"。オブジェクトが選択されていないときにこのアイテムを使用する場合は「false」。
選択された状態は、フォーカス (android:state_focused) が十分でない場合 (リスト ビューにフォーカスがあり、その中の項目が方向パッドで選択されている場合など) に使用されます。

android:state_checkable
ブール値。オブジェクトがチェック可能な場合にこの項目を使用する場合は「true」。オブジェクトがチェック可能でないときにこのアイテムを使用する必要がある場合は「false」。(オブジェクトがチェック可能なウィジェットとチェックできないウィジェットの間で遷移できる場合にのみ役立ちます。)

android:state_checked
ブール値。オブジェクトのチェック時にこのアイテムを使用する必要がある場合は「true」。オブジェクトがチェックされていないときに使用する必要がある場合は「false」。

android:state_enabled
ブール値。オブジェクトが有効な場合 (タッチ/クリック イベントを受信できる場合)、この項目を使用する必要がある場合は「true」。オブジェクトが無効になっているときに使用する必要がある場合は「false」。

android:state_activated
ブール値。オブジェクトが永続的な選択としてアクティブ化されている場合にこの項目を使用する必要がある場合は「true」(永続的なナビゲーション ビューで以前に選択したリスト項目を「強調表示」する場合など)。オブジェクトがアクティブ化されていないときに使用する必要がある場合は「false」。
API レベル 11 で導入されました。

android:state_window_focused
ブール値。アプリケーション ウィンドウにフォーカスがある (アプリケーションがフォアグラウンドにある) ときにこのアイテムを使用する必要がある場合は「true」、アプリケーション ウィンドウにフォーカスがないときにこのアイテムを使用する必要がある場合 (たとえば、通知シェードがプルダウンするか、ダイアログが表示されます)。

于 2012-01-13T15:05:12.963 に答える
0

遅いのはわかってるdocoから

Android:state_focused

State value for StateListDrawable, set when a view has input focus.

May be a boolean value, such as "true" or "false".

私のテストでは、フォーカスは、ユーザーがソフト キーボードやリモート コントロール デバイス (Android TV) のような「次/前」の UI を使用して UI 要素に移動したとき、またはユーザーが何もせずにボタンをタッチ アンド ホールドしたときです。それを解放します。長押しの UI ドローアブルを表示するには、state_pressed=true と state_focused=true を使用する必要がありました。

于 2018-05-08T01:15:40.027 に答える