0
我在自定义弹出窗口中有一个searchview,下面有一个listview。Android,searchview在自定义弹出框中没有输入文字
我想实现一个标准的searchview场景 - 在searchview中输入文本将过滤在列表视图中显示的内容。
出于某种原因,我无法在searchview中输入文本。 软键盘显示正常,但是当我输入时,没有输入文字。
public void display(final LayoutInflater inflater, int layout, final View anchor, ArrayList<String> docs, String currentDoc){
LinearLayout popupView = (LinearLayout)inflater.inflate(layout, null);
final InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
if(mList == null){
mList = (ListView)popupView.findViewById(R.id.doc_pop_list);
}
mDocuments = docs;
adapter = new ArrayAdapter<String>(mContext, R.layout.list_item,docs);
mList.setAdapter(adapter);
searchDocs=(SearchView) popupView.findViewById(R.id.doc_list_search);
searchDocs.requestFocus();
searchDocs.setQuery("", false);
searchDocs.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String text) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextChange(String text) {
adapter.getFilter().filter(text);
return false;
}
});
mList.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
docName = mList.getItemAtPosition(position).toString();
mWindow.dismiss();
mListener.docSelected(docName.toString());
}
});
Button dismiss = (Button)popupView.findViewById(R.id.button_docs_close);
dismiss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
mWindow.dismiss();
}
});
查看上面的java代码;
在我的xml我有一个自定义列表视图项:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:textColor="#000000" />
,这是这个布局中显示:
<SearchView
android:id="@+id/doc_list_search"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:queryHint="Search documents..." >
</SearchView>
</RelativeLayout>
<ListView
android:id="@+id/doc_pop_list"
android:layout_width="match_parent"
android:layout_height="420dp"
android:layout_above="@+id/doclist_close"
android:layout_below="@+id/docs_title"
android:layout_centerHorizontal="true"
android:layout_marginBottom="16dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:background="#ffffff" >
</ListView>
<Button
android:id="@+id/button_docs_close"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/blue"
android:text="@string/close"
android:textColor="@color/white" />
.....
任何想法是什么原因造成这种现象?
感谢
好吧,我想这一点,我不能得到任何输出logcat的。我添加了几个断点,以便我能够在文本发生变化时捕获这些断点,而不是任何东西。 – mangledBadger
好吧,我测试了你的代码(只是基本功能),输入显示正常。也许它会帮助你(查看编辑答案)。 – SILL
嘿,谢谢,我已经尝试了上面的,好吧,重构它以适合我的使用方式,但要保持基本相同。还没有发生。现在,我的自定义弹出视图显示在软键盘上,CSS z-index per-say,你认为这是相关的吗?我在独立活动中使用与上面相同的实现,并且它的功能正常。当它在这个自定义视图中实现时,它不起作用。 – mangledBadger