2013-07-16 24 views
6

Tôi có tiện ích SearchView trong ứng dụng của mình và tôi muốn hỏi một số câu hỏi về cách tùy chỉnh. Trước hết, bạn có thể bắt đầu tìm kiếm chỉ bằng cách nhấp vào biểu tượng tìm kiếm, có cách nào để làm cho toàn bộ SearchView có thể nhấp được không? Ngoài ra, có cách nào để làm cho SearchView xuất hiện một cái gì đó như thế này khi nó được nhấp?Tìm kiếm tùy chỉnhXem toàn bộ có thể nhấp trong android

a busy cat http://i41.tinypic.com/rr2ow4.png [] [1]

Nó hiện đang ở trạng thái này:!

a busy cat http://i41.tinypic.com/11jlu2p.png [] [1]

Đây là mã của tôi:

citySearch = (SearchView) findViewById(R.id.city_search_bar); 
    citySearch.setBackgroundResource(R.drawable.search_background); 
    citySearch.setOnSearchClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      citySearch.setIconifiedByDefault(true); 
      //citySearch.setIconified(true); 
     } 

    }); 
    citySearch.setOnQueryTextListener(new OnQueryTextListener() { 

     @Override 
     public boolean onQueryTextChange(String text) { 

      ((Filterable) cityListView.getAdapter()).getFilter().filter(text); 

      return false; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String text) { 

      return false; 
     } 

    }); 

    try 
    { 
     Field searchField = SearchView.class.getDeclaredField("mSearchButton"); 
     searchField.setAccessible(true); 
     ImageView searchBtn = (ImageView)searchField.get(citySearch); 
     searchBtn.setImageResource(R.drawable.search_icon); 
     searchBtn.setScaleType(ScaleType.FIT_CENTER); 
     searchPlate.setBackgroundResource(R.drawable.search_background); 
    } 
    catch (NoSuchFieldException e) 
    { 
     Log.e("SEARCHSTYLEERROR",e.getMessage(),e); 
    } 
    catch (IllegalAccessException e) 
    { 
     Log.e("SEARCHSTYLEERROR",e.getMessage(),e); 
    } 
+1

Ok, vấn đề đầu tiên được giải quyết bằng cách sử dụng setOnClickListener của thành phố. –

+0

Bạn nên trả lời câu hỏi này cùng với nhận xét của bạn ... nó đã giải quyết được vấn đề của tôi – coder

+0

@AnhaytAnanun Bạn đã giải quyết những vấn đề này ngay bây giờ chưa? Nếu vậy thì giải pháp là gì? Bạn có thể xin chia sẻ giải pháp ... Nó có thể giúp chúng tôi quá –

Trả lời

19

Theo mặc định, SearchView được 'biểu tượng hóa', được hiển thị dưới dạng biểu tượng kính lúp và chỉ khi người dùng nhấp vào biểu tượng bật, trường chỉnh sửa sẽ mở rộng.

Để cho phép người dùng nhấp vào bất kỳ đâu trên SearchView và mở rộng trường nhập. Chúng tôi chỉ cần thêm trình nghe nhấp chuột và gọi setIconified (sai) khi người dùng nhấp.

searchView = (SearchView)findViewById(R.id.searchView); 
searchView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      searchView.setIconified(false); 
     } 
    }); 
1

Một cách đơn giản khác để thực hiện việc này bằng cách đặt onActionViewExpanded().

searchView = (SearchView)findViewById(R.id.searchView); 
searchView.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     searchView.onActionViewExpanded(); 
    } 
}); 
0

Để cho phép viết khi nhấp vào toàn bộ thành phần, tôi khuyên bạn nên khai báo iconifiedByDefault="false" trên xml.

<SearchView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:iconifiedByDefault="false"/> 
Các vấn đề liên quan