2012-06-07 4 views
3

(또 다른!) 입력 방법을 구현하려고합니다. View를 확장 한 KeyboardView 객체의 사용과 확장을 구현하는 소프트 키보드 예제로 시작했습니다. View를 완전히 다른 방식으로 확장하고자하므로 다음을 input.xml에 넣습니다. 내 목표는 UI에 투명한 표면을 갖는 것입니다.안드로이드에서 IME UI를위한 투명한 배경

<?xml version="1.0" encoding="utf-8"?> 
<com.diffstrokes.ime.StrokeView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@null" 
    android:cacheColorHint="@null" > 
</com.diffstrokes.ime.StrokeView> 

IME를 호출하는 활동이 밝은 회색 배경으로 가려져 있습니다. 예를 들어, 배경색을 반투명 한 빨간색으로 변경하면보기 배경 위에 몇 줄의 회색 픽셀이 보입니다. 이 배경은 어디에서오고, 어떻게 제거 할 수 있습니까?


뷰 대신 LinearLayout을 사용하려고했습니다. LinearLayout에는 두 개의 View 태그가 있습니다. 문제없이

LinearLayout llo = 
(LinearLayout) getLayoutInflater().inflate(
         R.layout.dslayout, null); 

onCreateInputView() 완료를하지만, 어떤 점에서 나는 다음과 같은 로그에서와 같이 예외를 얻을 : 내 onCreateInputView() 함수에서 나는 다음과 함께있는 LinearLayout을 팽창

06-12 15:17:01.350: E/AndroidRuntime(14002): FATAL EXCEPTION: main 
06-12 15:17:01.350: E/AndroidRuntime(14002): 
java.lang.IllegalStateException: The specified child already has a 
parent. You must call removeView() on the child's parent first. 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
android.view.ViewGroup.addViewInner(ViewGroup.java:2117) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
android.view.ViewGroup.addView(ViewGroup.java:2012) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
android.view.ViewGroup.addView(ViewGroup.java:1992) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
android.inputmethodservice.InputMethodService.setInputView(InputMethodService.java:1105) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
android.inputmethodservice.InputMethodService.updateInputViewShown(InputMethodService.java:963) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
android.inputmethodservice.InputMethodService.showWindowInner(InputMethodService.java:1318) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
android.inputmethodservice.InputMethodService.showWindow(InputMethodService.java:1293) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
android.inputmethodservice.InputMethodService$InputMethodImpl.showSoftInput(InputMethodService.java:392) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
android.inputmethodservice.IInputMethodWrapper.executeMessage(IInputMethodWrapper.java:176) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:61) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
android.os.Handler.dispatchMessage(Handler.java:99) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
android.os.Looper.loop(Looper.java:130) 06-12 15:17:01.350: 
E/AndroidRuntime(14002): at 
android.app.ActivityThread.main(ActivityThread.java:3806) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
java.lang.reflect.Method.invokeNative(Native Method) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
java.lang.reflect.Method.invoke(Method.java:507) 06-12 15:17:01.350: 
E/AndroidRuntime(14002): at 
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
06-12 15:17:01.350: E/AndroidRuntime(14002): at 
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 06-12 
15:17:01.350: E/AndroidRuntime(14002):  at 
dalvik.system.NativeStart.main(Native Method) 

언제 나는보기를 부 풀린다, 이것은 일어나지 않는다. 왜 그 이유를 설명 할 수 있습니까?

+0

xml로 만들지 못했습니다 : –

+0

+0

XML 코드를 일반 형식으로 표시하려면 어떻게해야합니까? –

답변

2

나는 이것이 낡은 질문이라는 것을 알고 있지만 투명 IME를 만들려고 할 때 누군가이 문제에 부딪혔을 경우를 대비해 답변을 게시 할 것이라고 생각합니다. 연두색 (또는 흰색) 배경에 대한 설명과 투명 IME를 올바르게 작성하는 방법에 대한 관련 StackOverflow 질문에 대한 내 대답을 참조하십시오. https://stackoverflow.com/a/20319466/1160216