2017-04-14 1 views
0

enter image description hereComment changer la largeur du menu déroulant de Spinner?


main.xml

<LinearLayout 
    android:id="@+id/spinners" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:orientation="horizontal"> 
    <Spinner 
     android:id="@+id/location_spinner" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:dropDownWidth="match_parent"/> 
    <Spinner 
     android:id="@+id/license_spinner" 
     android:layout_width="0dp" 
     android:layout_height="match_parent" 
     android:layout_weight="1" 
     android:dropDownWidth="match_parent"/> 
</LinearLayout> 

spinner_row.xml

<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="center_vertical" 
    android:orientation="horizontal"> 

    <Button 
     android:id="@+id/btn_1" 
     style="@style/SpinnerButton"> 
    </Button> 

</LinearLayout> 

style.xml

<style name="SpinnerButton" parent="@android:style/Widget.Button"> 
    <item name="android:layout_width">match_parent</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_marginLeft">5dp</item> 
    <item name="android:layout_marginRight">5dp</item> 
    <item name="android:layout_marginBottom">10dp</item> 
    <item name="android:textColor">@android:color/black</item> 
    <item name="android:layout_weight">1</item> 
    <item name="android:clickable">true</item> 
</style> 

Je veux descendre style comme [photo B]. J'ai utilisé dropDownWidth = match_parent. Mais ça ne marche pas. Je pense que c'est parce que le parent de dropDown est Spinner. Chaque spinner a un poids 1. Est-il possible d'appliquer une disposition large?

+0

Essayez menu Popup au lieu de Spinner, S'il vous plaît vérifier ce lien http://stackoverflow.com/questions/38477208/set-popup-menu-to-full-screen – Sach

+0

@ Sachin Shelar >> Merci pour votre commentaire . Je pense que vous et @Android Dev recommandons la même chose. droite? – 01hanst

+0

Possible doublon de [Changer Spinner DropDown largeur] (http://stackoverflow.com/questions/18235711/change-spinner-dropdown-width) –

Répondre

0

Essayez code suivant, si cela fonctionne pour vous.

DealCategorySpinner = (Spinner) findViewById(R.id.DealCategorySpinner); 

    try { 
     Field popup = Spinner.class.getDeclaredField("mPopup"); 
     popup.setAccessible(true); 

     // Get private mPopup member variable and try cast to ListPopupWindow 
     android.widget.ListPopupWindow popupWindow = (android.widget.ListPopupWindow) popup.get(DealCategorySpinner); 

     // Set popupWindow width to 800px 
     popupWindow.setWidth(800); 
    } 
    catch (NoClassDefFoundError | ClassCastException | NoSuchFieldException | IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
+0

merci, je vais essayer ceci – 01hanst