5

Tôi đã theo dõi câu trả lời tuyệt vời cho điều này question để làm cho tiện ích SearchView trong ActionBar của tôi phù hợp với một chủ đề tùy chỉnh. Nó hoạt động tốt cho chế độ chân dung, nhưng trong cảnh quan hệ điều hành sẽ thu nhỏ chiều cao của ActionBar để tối đa hóa nội dung màn hình nội dung. Thay vì lắp phụ tùng SearchView mà không lợi nhuận vào ActionBar giống như các mặt hàng khác, nó được cắt nhỏ ra ở đầu trang:Cách khắc phục nền SearchView tùy chỉnh bị cắt trong cảnh quan?

SearchView widget with chopped off top

Tôi đã đào qua res-thư mục của nguồn Android, nhưng không thể không tìm thấy bất kỳ bố cục hoặc tài nguyên chuyên ngành nào có thể làm rõ cách sửa lỗi này hoặc thậm chí cách Android tự quản lý để phù hợp với Tiện ích con Holo SearchView mặc định vào ActionBar đã giảm.

Mọi thông tin chi tiết đều được đánh giá cao. CÁM ƠN.

Trả lời

3

Bạn phải sử dụng phiên bản nhỏ hơn của văn bản chỉnh sửa. Kích thước dụng cụ có thể kéo được nhỏ hơn so với bản vẽ văn bản chỉnh sửa mặc định.

Kiểm tra các drawables sử dụng ở đây

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/frameworks/support/v7/appcompat/res/drawable/abc_textfield_searchview_holo_dark.xml?av=f

+0

Cuối cùng đã khắc phục sự cố này từ nhật ký của chúng tôi. Cảm ơn bạn rất nhiều vì gợi ý! – Chris

3

Tôi đã có một vấn đề tương tự, và đã có thể sửa chữa nó bằng cách đơn giản thay đổi trọng lực của EditText:

try { 
    int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); 
    AutoCompleteTextView searchPlate = (AutoCompleteTextView) searchView.findViewById(searchPlateId); 

    //fixes the gravity (fixes text cutoff for landscape mode) 
    searchPlate.setGravity(Gravity.LEFT|Gravity.BOTTOM); 
} 
catch (Throwable t) 
{ 
    //not sure if the above code will always work (layouts change), but works well for the current API. 
    t.printStackTrace(); 
} 
+0

Điều đó cũng có vẻ giống như một công việc có thể xung quanh, tuy nhiên câu trả lời của Jonathan là con đường để đi nếu bạn có đủ khả năng thời gian để vẽ lại các tài nguyên theo cách thủ công. – Chris

0

Các SearchView là không dễ dàng tùy chỉnh nhưng tôi đã tìm thấy một công việc xung quanh. Nghiên cứu và mã của tôi chủ yếu được lấy từ câu trả lời đầu tiên được tìm thấy ở đây: Changing the background drawable of the searchview widget. Sau khi thiết lập nền trong file XML của tôi như thế này:

 `<SearchView 
     android:layout_width="match_parent" 
     android:layout_height="30dp" 
     android:background="@drawable/rounded_grey_search_bar" 
     android:clickable="true" 
     android:iconifiedByDefault="false"/>` 

tôi đã thêm đoạn mã sau vào tập tin Java của tôi để thay đổi miếng đệm của SearchView:

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 


    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    int searchPlateId = searchView.getContext().getResources().getIdentifier("android:id/search_plate", null, null); 
    searchView.findViewById(searchPlateId).setBackgroundResource(R.drawable.rounded_grey_search_bar); 

    int voiceSearchPlateId = searchView.getContext().getResources().getIdentifier("android:id/submit_area", null, null); 
    searchView.findViewById(voiceSearchPlateId).setBackgroundResource(R.drawable.rounded_grey_search_bar); 

    int searchTextViewId = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); 
    TextView searchTextView = (TextView) searchView.findViewById(searchTextViewId); 
    searchTextView.setPadding(20, 20, 20, 20); 

Thiết padding cho phép tôi để có được những văn bản nơi tôi muốn.

Các vấn đề liên quan