2016-05-09 9 views
-3

Ich verstehe, wir können Such-Widget in Aktivitätsleiste haben. Gemäß meiner Anforderung können wir die Symbolleiste für das Such-Widget nicht verwenden. Ist das möglich, können wir das Such-Widget als separate Entität in Aktivität direkt unter der Symbolleiste oder an irgendeiner anderen Stelle verwenden (genau wie die Textansicht oder die Schaltfläche)?Können wir andere Such-Widget als Symbolleiste in Android haben

Antwort

1

enter image description here

Ich habe die Suche xml erstellt und es verwenden, jeder, indem, wo ich will.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/colorPrimary" 
    android:padding="16dp"> 

    <android.support.v7.widget.CardView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:cardBackgroundColor="@android:color/white" 
     app:cardElevation="4dp"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <android.support.v7.widget.SearchView 
       android:id="@+id/searchView" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:queryHint="Search.."> 

      </android.support.v7.widget.SearchView> 

     </LinearLayout> 

    </android.support.v7.widget.CardView> 

</LinearLayout> 

in Layout

<include layout="@layout/search_view" /> 
+0

Danke für die Antwort. Ich versuche, die Sprachsuche auch mit Android hinzuzufügen: voiceSearchMode = "showVoiceSearchButton", aber es wird nicht angezeigt? Irgendeine Idee dazu? –

+0

Ich werde dafür gehen. Ich werde Sie benachrichtigen, wenn es fertig ist. –

0

Ja, es ist möglich schließen ... wie folgt tun ...

In XML

<FrameLayout 
    android:focusableInTouchMode="true" 
    android:id="@+id/searchBoxFrame" 
    android:layout_below="@+id/textViewTitle" 
    android:layout_height="40dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginTop="16dp" 
    android:layout_width="fill_parent"> 

    <EditText 
     android:background="@drawable/input_box" 
     android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 " 
     android:drawableLeft="@android:drawable/ic_menu_search" 
     android:hint="Search" 
     android:id="@+id/autoText" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:lines="1" 
     android:paddingLeft="7dp" 
     android:textSize="20sp" /> 

    <Button 
     android:background="@android:drawable/ic_menu_close_clear_cancel" 
     android:id="@+id/searchBoxCancel" 
     android:layout_gravity="right|center_vertical" 
     android:layout_height="wrap_content" 
     android:layout_marginRight="10dp" 
     android:layout_width="40dp" 
     android:visibility="gone" /> 
</FrameLayout> 

In Java

private EditText searchEditText; 
private Button cancelButton; 

searchEditText = (EditText) findViewById(R.id.autoText); 

cancelButton = (Button) findViewById(R.id.searchBoxCancel); 

private void onEditTextItemChanged() { 
    searchEditText.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      list.clear(); 
      String editTextString = searchEditText.getText().toString(); 
      int textLength = editTextString.length(); 
      if (textLength > 0) { 
       cancelButton.setVisibility(View.VISIBLE); 
      } else { 
       cancelButton.setVisibility(View.GONE); 
      } 
      for (int i = 0; i < list.size(); i++) { 
       String searchText = ""; 
       searchText = list.get(i).getName().toString(); 
       if (textLength <= searchText.length()) { 
        // compare the String in EditText with Names in the 
        // ArrayList 
        if (searchText.toLowerCase().contains(editTextString.toLowerCase())) { 
         list.add(list.get(i)); 
        } 
       } 
      } 
      listItemsAdapter = new listItemsAdapter(getApplicationContext(), list); 
      listView.setAdapter(listItemsAdapter); 
     } 

     @Override 
     public void afterTextChanged(Editable s) { 
     } 
    }); 

} 

private void onCancelButtonClicked() { 
    cancelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      searchEditText.setText(""); 
     } 
    }); 
} 
Verwandte Themen