2012-06-26 2 views
0

Я хотел бы показать два представления в контексте службы. Один из них - TextView, а другой - класс, который я разработал, расширяя базовый класс класса.
prompt.xml:service show view 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:

<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> 

в моей реализации onInitializeInterface() Я надуть их следующим образом:

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

я вижу sssView, но а не TextView. Любые идеи почему?

+0

вы устанавливаете как в комплектеContentView? – Sajmon

+0

Нет, в качестве примера, с которого я работал (SoftKeyboard), не вызывал setContentView(). Я должен был бы вывести активность, чтобы сделать этот звонок, и это звучит не так. –

+0

Продолжая изучать это после перерыва ...
Поскольку один вид виден, я решил использовать ViewGroup (LinearLayout), чтобы удерживать оба моих представления. В этом случае я получаю исключение IllegalStateException, введенное в InputMethodService.setInputView(), функцию, которую я не переопределял. В сообщении об ошибке говорится: «У указанного ребенка уже есть родительский элемент». Я полагаю, что это означает, что setInputView пытается перекрыть дочерние представления в моем LinearLayout. Может (и должен) попытаться предотвратить это, переопределив setInputView. Наверное, я попытаюсь посмотреть, что произойдет. –

ответ

0

Это не совсем ответ, но это решение. Вместо того, чтобы иметь два отдельных представления, все, что мне нужно было сделать, это наследовать мой sssView из TextView, а не просматривать. Затем я раздул один вид и поместил свой текст там, где хочу, используя гравитацию.