2016-07-29 43 views
3

私は問題があり、まだ解決策を見つけることができませんでした!私はいくつかのキーを持つカスタムキーボードを実装しました。各キーに背景画像があります。以下、元のキーボードのように、私は押されたキー自体の背景色を変更したいと思います:Androidカスタムキーボードの変更背景色のキーが押された

enter image description here

を私はプレビューを持っているしたくない、私は、キー自体の背景色を変更したいですキーが押されたとき。ここに私のファイルは、以下のとおりです。背景色が私の描画可能に変更されますが、私は、キーを打ったとき、それは変更されません

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item 
    android:drawable="@drawable/cleanbuttonnormal" /> 
<item 
    android:state_pressed="true" 
    android:drawable="@drawable/cleandeactivate" /> 
<item 
    android:state_checkable="true" 
    android:drawable="@drawable/cleanbuttonnormal" /> 
<item 
    android:state_checkable="true" 
    android:state_pressed="true" 
    android:drawable="@drawable/cleandeactivate" /> 
<item 
    android:state_checkable="true" 
    android:state_checked="true" 
    android:drawable="@drawable/cleanbuttonnormal" /> 
<item 
    android:state_checkable="true" 
    android:state_checked="true" 
    android:state_pressed="true" 
    android:drawable="@drawable/keybackground" /> 
</selector> 

keyboard.xml

<?xml version="1.0" encoding="UTF-8"?> 
<android.inputmethodservice.KeyboardView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/keyboard" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_alignParentBottom="true" 
android:keyPreviewOffset="10dp" 
android:keyPreviewLayout ="@layout/preview" 
android:keyTextColor="@color/colorAccent" 
android:keyBackground="@drawable/keybackground" 
android:background="#881f2023" 
/> 

keybackground.xml押した状態にする。背景も同じです。手伝っていただけませんか?

私のカスタムキーボードレイアウトで、ボタンがヒットしたことを示すプレビューが有効になっています。

enter image description here

8との黒いボタンが黄色に取得する必要があります。プレビューは目的のデバッグ用です。

答えて

1

状態リストに問題があります。keybackground.xmlです。ここでstate list documentationからの抜粋は次のとおりです。各状態変化時に

、状態リストは、下 にトップを横断して、現在の状態に一致する最初の項目を使用-さ 選択は、「最適な一致に基づくものではありません、状態の最小基準を満たす最初の項目は です。

あなたのケースでは、毎回​​3210が選択されています。最も具体的な項目が最初になるように項目の順序を変更する必要があります。

+0

お返事ありがとうございました!私は問題を理解していますが、どこでこれを変更しますか?どのファイルが最初にチェックされますか?特定のbackground.xmlファイルを最初の背景として設定するにはどうすればよいですか?私はタイプミスをしたことに気づいた。私は一度修正しました。私はcleanbuttonnormalのkeybackground.xml instedを使用しました。今は自分のコードのように見えます。 – user3325230

+0

逆の順序で試してみてください! –

+0

ありがとう!この事実を知らなかった。あなたは正しいです、上記のチェック状態を移動して、すべてが機能しています!ありがとう! – user3325230

関連する問題