2016-04-05 27 views
4

Appcompat PopupMenu'nun genişliğini değiştirirken sorun yaşıyorum çünkü menü öğesi minWidth öğesini 196dip olarak ayarlayan MenuPopupHelper.java öğesinde bu düzen abc_popup_menu_item_layout.xml dosyasını kullanıyor. 1 Android PopupMenu genişliği nasıl değiştirilir

<android.support.v7.internal.view.menu.ListMenuItemView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="?attr/dropdownListPreferredItemHeight" 
     android:minWidth="196dip" 
     android:paddingRight="16dip"> 

benim style.xml aşağıdaki özelliklerde minWidth yanı sıra dropdownWidth geçersiz kılmak için çalıştı. Ben de android minWidth geçersiz kılmayı denedim: dropDownItemStyle, ama yardımcı olmadı. ListMenuItemView'ın bu sabit kodlanmış özniteliğini geçersiz kılmanın mümkün olup olmadığını merak etmeye başladım. Herkes bir PopupMenu genişliğini değiştirmeyi başardı mı?

<style name="OrderDetailsActivity" parent="AppTheme"> 
    <item name="android:textAppearanceLargePopupMenu">@style/OrderDetailsPopupMenuTextAppearanceLarge</item> 
    <item name="android:textAppearanceSmallPopupMenu">@style/OrderDetailsPopupMenuTextAppearanceSmall</item> 
    <item name="android:dropDownListViewStyle">@style/OrderDetailsListDropDownStyle</item> 
    <item name="dropDownListViewStyle">@style/OrderDetailsListDropDownStyle</item> 
</style> 

<style name="OrderDetailsPopupMenuTextAppearanceLarge" parent="@android:style/TextAppearance.DeviceDefault.Widget.PopupMenu.Large"> 
    <item name="android:fontFamily">sans-serif-medium</item> 
    <item name="android:textSize">@dimen/font_size_medium</item> 
</style> 

<style name="OrderDetailsPopupMenuTextAppearanceSmall" parent="@android:style/TextAppearance.DeviceDefault.Widget.PopupMenu.Small"> 
    <item name="android:fontFamily">sans-serif-medium</item> 
    <item name="android:textSize">@dimen/font_size_medium</item> 
</style> 

<style name="OrderDetailsListDropDownStyle" parent="Widget.AppCompat.ListView.DropDown"> 
    <item name="android:divider">@drawable/list_divider</item> 
</style> 

cevap

1

Sen özel açılan menü öğesi düzeni dosyasını hazırlayıp onCreate Your Uygulama sınıfının() yöntemini yansıma kullanarak bu statik alan güncelleyebilirsiniz:

private void updatePopUpMenuItemLayout() { 
    try { 
     Field field = MenuPopupHelper.class.getDeclaredField("ITEM_LAYOUT"); 
     field.setAccessible(true); 
     field.set(null, R.layout.custom_popup_menu_item_layout); 
    } catch (Exception e) { 
     Log.e("TAG", e.getMessage()); 
    } 
} 
+0

iç 'custom_popup_menu_item_layout' nedir? –

+0

Özel açılan öğe düzeninizle dosya. – mdabrowski

İlgili konular