2013-04-03 6 views
6

Wprowadzam niestandardową klawiaturę na Androida. Właśnie przeczytałem dokumentację na "developer.android.com" i zobaczyłem próbkę z miękką klawiaturą. Wszystko co mogę - to zmienić tło klawiatury, zmienić rozmieszczenie przycisków, ustawić keyIcon zamiast keyLabel na klucz.Jak zmienić kolor tła klucza dla klawiatury programowej Android?

Ale nadal nie mogę zmienić tła i koloru klucza.

Proszę napisać przykładowy kod XML lub źródła. Dzięki!

Moja próbka gdzie mogę zmienić tła:

public class GBInput extends InputMethodService implements KeyboardView.OnKeyboardActionListener{ 
    ... 
    private GBKeyboardView mInputView; 
    @Override 
     public View onCreateInputView() { 
      mInputView = (GBKeyboardView) getLayoutInflater().inflate(R.layout.input, null); 
      mInputView.setOnKeyboardActionListener(this); 
      mInputView.setKeyboard(mQwertyKeyboard); 
      mInputView.setBackgroundResource(R.color.keyboard_background); 
      return mInputView; 
     } 
    ... 
    } 

I muszę coś takiego: enter image description here

obrazy dla wszystkich przycisków - jego zły pomysł, więc chcę, aby znaleźć lepszą problem.

+0

który byłby zarządzany przez twojego eksperta od grafiki coz jest kluczem tylko myślę, że – Nezam

+0

Twoje pytanie jest nieco zbyt szerokie; czy możesz opublikować niektóre edytowane przez Ciebie xml, a co nie działa zgodnie z oczekiwaniami? – etienne

+0

dodał więcej informacji na moje pytanie .. – yuralife

Odpowiedz

21

Dodaj ten wiersz kodu do input.xml

android:keyBackground="@drawable/samplekeybackground" 

Więc input.xml powinien w końcu wygląda podobnie do tego.

<com.example.keyboard.LatinKeyboardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/keyboard" 
    android:layout_alignParentBottom="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:keyPreviewLayout="@layout/input_key_preview" 
    android:keyBackground="@drawable/samplekeybackground" 
    /> 

Jeśli masz już rozciągliwej do korzystania wielki inaczej oto próbka klucz tło odkształcalne, które przyniosą rezultaty jak twój przykład obrazu.

<?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/normal" /> 
    <!-- Pressed state --> 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/pressed" /></selector> 

Jeśli chcesz wszystko w xml możesz użyć kształtu xml jak poniżej. odkształcalne/normal.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <stroke android:width="4dp" android:color="#000000" /> 
    <solid android:color="#FFFFFF"/> 
</shape> 

i odkształcalne/pressed.xml

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
     <stroke android:width="4dp" android:color="#A3D9F3" /> 
     <solid android:color="#4ABCE8"/> 
    </shape> 
+0

świetna odpowiedź, jednak kolory klawiszy na klawiaturze są białe. jak mogę zmienić kolor? – TharakaNirmana

+1

w pliku losowym/normal.xml znajdź > '< android: color =" # FFFFFF "/>' zmienić #FFFFFF na żądany kolor. zobacz [ShapeDrawable] (http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape), aby uzyskać szczegółowe informacje. – ericharlow

+4

Działa to tylko na poziomie KeyboardView, a nie jeśli próbujesz ustawić inny kolor dla określonych klawiszy. Wszelkich pomysłów, jak wdrożyć w w xml klawiatury? –

4
<com.example.keyboard.LatinKeyboardView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/keyboard" 
    android:layout_alignParentBottom="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:keyPreviewLayout="@layout/input_key_preview" 
    android:keyBackground="@drawable/samplekeybackground" 
    android:keyTextColor="#000000" 
    /> 

wystarczy dodać tę linię do keyboardView zmienić kolor tekstu na czarnym

android: keyTextColor = "# 000000"