5

Benim ActionBar'ımdaki özel bir temayı uydurmak için bu question için büyük yanıtı takip ettim. Portre modu için gayet iyi çalışır, ancak manzarada OS, içerik ekranını en üst düzeye çıkarmak için ActionBar'ın yüksekliğini daraltır. Bunun yerine sadece diğer öğeleri gibi İşlem Çubuğu içine marjlar olmadan SearchView widget'ı uydurma nedeniyle, üst kısmında kapalı kıyılmış:Kesinti özel Arama Görünümü arka planda yatay olarak nasıl düzeltilir?

SearchView widget with chopped off top

Ben Android kaynağının res-klasör aracılığıyla kazdık ama could ettik Bunun nasıl düzeltileceğini açıklayan özel bir düzen ya da kaynak bulamıyor ya da Android'in kendisi de varsayılan ActionScript’e varsayılan Holo SearchView Widget’i sığdırıyor.

Herhangi bir anlayış takdir edilmektedir. TEŞEKKÜRLER.

cevap

3

Düzenleme metninin daha küçük bir sürümünü kullanmanız gerekir. Drawables instrinsic boyutları, varsayılan düzenleme metni çiziminden daha küçüktür.

Kontrol dışarı drawables burada kullanılan

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

Son olarak, bu soruyu arka günlüğümüzden düzeltmeye çalıştık. Ipucu için çok teşekkür ederim! – Chris

3

Ben benzer bir sorun vardı ve sadece EditText ait Gravity'nin değiştirerek bunu düzeltmek başardı:

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

Bu da olası bir çalışma gibi görünüyor, ancak Jonathan'ın cevabı, kaynakları el ile yeniden çizme zamanını karşılayabiliyorsanız gitmenin yolu. – Chris

0

SearchView olduğunu kolayca özelleştirilmiş değil ama etrafında bir iş buldum. Araştırmam ve kodum çoğunlukla burada bulunan ilk cevaptan alınmıştır: Changing the background drawable of the searchview widget. Böyle benim XML dosyası arka plan ayarladıktan sonra:

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

Ben SearchView dolgusu değiştirme benim Java dosyasına aşağıdaki kodu eklendi:

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); 

dolgu ayarlanması beni almak için izin istediğim metin.

İlgili konular