2013-06-18 4 views
3

내 KeyboardView에 대한 사용자 정의 배경을 설정하려고합니다. XML 속성을 keyBackground으로 설정하는 방법이 될 것 같습니다.하지만 드로어 블을 확장하려고 시도 할 때 NullPointerException이 계속 발생합니다. 내 logcat에서 ResourceNotFoundException이 계속 발생합니다. 나는 무엇이 잘못되었는지 잘 모르겠다. 모든 파일은 올바른 위치에있는 것처럼 보인다. 나는 여러 당김 폴더에 넣어 것 등 내 프로젝트를 청소KeyboardView가 XML 속성을 사용하지 않습니다. keyBackground

main.xml에 파일 :

<android.inputmethodservice.KeyboardView 
    android:id="@+id/keyboardView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:focusable="true" 
    android:focusableInTouchMode="true" 
    android:visibility="gone" 
    android:keyBackground="@drawable/keybg" /> 

keybg.xml 파일 :

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:state_pressed="true" 
     android:drawable="@drawable/keybg_pressed" /> 
    <item 
     android:drawable="@drawable/keybg_notpressed" /> 
</selector> 

이 keybg_pressed 모두 PNG keybg_notpressed 있습니다 파일

(관련) 로그 캣 :

E/AndroidRuntime(17772): FATAL EXCEPTION: main 
E/AndroidRuntime(17772): java.lang.RuntimeException: Unable to start activity 
    ComponentInfo{MainActivity}: android.view.InflateException: 
    Binary XML file line #620: Error inflating class 
    android.inputmethodservice.KeyboardView 

E/AndroidRuntime(17772): Caused by: android.content.res.Resources$NotFoundException: File 
    res/drawable/keybg.xml from drawable resource ID #0x7f0201a3 
E/AndroidRuntime(17772): at 
    android.content.res.Resources.loadDrawable(Resources.java:1947) 
E/AndroidRuntime(17772): at 
    android.content.res.TypedArray.getDrawable(TypedArray.java:601) 
E/AndroidRuntime(17772): at android.inputmethodservice.KeyboardView.<init>  
    (KeyboardView.java:303) 
E/AndroidRuntime(17772): at android.inputmethodservice.KeyboardView.<init> 
    (KeyboardView.java:279) 
E/AndroidRuntime(17772): ... 28 more 
E/AndroidRuntime(17772): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(17772): at 
    android.graphics.drawable.DrawableContainer$DrawableContainerState. 
    addChild(DrawableContainer.java:524) 
E/AndroidRuntime(17772): at 
android.graphics.drawable.StateListDrawable$StateListState.addStateSet(StateListDrawable.java:278) 
E/AndroidRuntime(17772): at 
    android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:186) 
E/AndroidRuntime(17772): at 
    android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:881) 
E/AndroidRuntime(17772): at 
    android.graphics.drawable.Drawable.createFromXml(Drawable.java:818) 
E/AndroidRuntime(17772): at 
    android.content.res.Resources.loadDrawable(Resources.java:1944) 
E/AndroidRuntime(17772): ... 31 more 

답변

0

같은 XML 파일을 고해상도에서 폴더를 생성합니다 이미지 위에

<!-- Functional keys. --> 

<item android:state_single="true" android:state_pressed="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_pressed_holo" /> 
<item android:state_single="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_normal_holo" /> 

<!-- Toggle keys. Use checkable/checked state. --> 
<!-- The lock icon is a copy of the 'on' icon, hue shifted by +164 using Gimp's Colors/Hue&Saturation --> 

<item android:state_checkable="true" android:state_checked="true" android:state_pressed="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_pressed_on_holo" /> 
<item android:state_checkable="true" android:state_pressed="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_pressed_off_holo" /> 
<item android:state_checkable="true" android:state_checked="true" android:state_active="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_normal_lock_holo" /> 
<item android:state_checkable="true" android:state_checked="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_normal_on_holo" /> 
<item android:state_checkable="true" 
     android:drawable="@drawable/btn_keyboard_key_dark_normal_off_holo" /> 

<!-- Normal keys. --> 

<item android:state_pressed="true" 
     android:drawable="@drawable/btn_keyboard_key_light_pressed_holo" /> 
<item android:drawable="@drawable/btn_keyboard_key_light_normal_holo" /> 

는 당김-HDI PNG

1

는 "keybg_pressed 말에 존재하는 두 keybg_notpressed 있습니다 png 파일 "이라고합니다.

XML 파일이어야합니다. (나는 그것이 이상하다는 것을 안다).

내 사용자 정의 키보드보기 위해 이것을 사용

xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/keyboardView" 
    android:layout_alignParentBottom="true" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:keyBackground="@drawable/samplekeybackground" 
    android:keyTextColor="@android:color/white" 
    android:keyPreviewLayout="@layout/input_key_preview" 
    android:background="@drawable/keyboardbackground"