2012-06-26 2 views
0

서비스 컨텍스트에서 두 가지보기를 표시하고 싶습니다. 하나는 TextView이고 다른 하나는 기본 View 클래스를 확장하여 개발 한 클래스입니다.
prompt.xml :서비스보기보기 getLayoutInflater

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mtPrompt" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@android:color/background_dark" 
    android:text="@string/demoString" 
    android:textColor="@android:color/white" 
    android:minLines="2" 
    android:textSize="25dp" > 
</TextView> 

및 input.xml : 내 onInitializeInterface() 구현

<com.xxx.ime.sssView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/inputView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/translucent_gray" 
    android:cacheColorHint="@null" > 

</com.xxx.ime.sssView> 

나는 다음과 같이 그들을 팽창 : 나는 sssView를 참조

sssView sv = 
     (sssView) getLayoutInflater().inflate(R.layout.input, null); 
TextView tv = 
     (TextView) getLayoutInflater().inflate(R.layout.prompt, null); 

을하지만, TextView가 아닙니다. 어떤 아이디어?

+0

둘 다 setContentView로 설정합니까? – Sajmon

+0

아니요, 예를 들어 (SoftKeyboard)에서 작업 한 예가 setContentView()를 호출하지 않았습니다. 나는 그 전화를하기 위해 활동을 추론해야 할 것입니다, 그리고 그것은 옳지 않은 것 같습니다. –

+0

휴식 후 이것을 계속 살펴 봅니다 ...
하나의보기가 표시되므로 ViewGroup (LinearLayout)을 사용하여 두 가지보기를 모두 유지하기로 결정했습니다. 이 경우 InputMethodService.setInputView()에서 IllegalStateException이 발생합니다.이 함수는 내가 재정의하지 않은 함수입니다. 오류 메시지에 "지정된 하위에 이미 상위 항목이 있습니다"라고 표시됩니다. 나는 이것이 setInputView가 내 LinearLayout에 자식 뷰를 다시 붙이기를 요구한다는 것을 의미한다. setInputView를 오버라이드 (override)하면 (자) 이것을 막을 수가 있습니까. 나는 무슨 일이 일어나는지 보려고 노력할 것입니다. –

답변

0

이것은 상당히 답이 아니지만 해결책입니다. 두 개의 분리 된 뷰를 가지는 것보다,보기보다는 TextView에서 sssView를 상속 받아야했습니다. 그런 다음 나는 하나의 견해를 팽창 시켰고, 중력을 사용하여 원할 때 텍스트를 배치했습니다.