2017-02-04 38 views
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" /> 
..... 

任何想法是什麼原因造成這種現象?

感謝

回答

0

你能嘗試登錄從onQueryTextChange搜索查看的內容,當你鍵入的東西嗎?我只是想排除顯示問題。

編輯:

public class MyActivity extends Activity { 
    RelativeLayout layout; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_my); 

     layout = (RelativeLayout) findViewById(R.id.layout); 
     display(); 
    } 

    public void display(){ 
     LayoutInflater inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View view = inflater.inflate(R.layout.popup, null); 
     layout.addView(view); 

     SearchView searchDocs=(SearchView) view.findViewById(R.id.doc_list_search); 
     searchDocs.requestFocus(); 
     searchDocs.setQuery("", false); 
     searchDocs.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String text) { 
       // TODO Auto-generated method stub 
       return false; 
      } 
      @Override 
      public boolean onQueryTextChange(String text) { 
       // TODO Auto-generated method stub 
       Log.d("Test","input"); 
       return false; 
      } 
     }); 
    } 
} 
+0

好吧,我想這一點,我不能得到任何輸出logcat的。我添加了幾個斷點,以便我能夠在文本發生變化時捕獲這些斷點,而不是任何東西。 – mangledBadger

+0

好吧,我測試了你的代碼(只是基本功能),輸入顯示正常。也許它會幫助你(查看編輯答案)。 – SILL

+0

嘿,謝謝,我已經嘗試了上面的,好吧,重構它以適合我的使用方式,但要保持基本相同。還沒有發生。現在,我的自定義彈出視圖顯示在軟鍵盤上,CSS z-index per-say,你認爲這是相關的嗎?我在獨立活動中使用與上面相同的實現,並且它的功能正常。當它在這個自定義視圖中實現時,它不起作用。 – mangledBadger