5

은 현재 내가 기본 폭을 갖는 오버 플로우 메뉴가 오버 플로우 메뉴의 변화 폭 이 방법 :안드로이드 :</p> <p><img src="https://i.stack.imgur.com/t8ffX.jpg" alt="enter image description here"></p> <p>내가 원하는 것은 :</p> <p><img src="https://i.stack.imgur.com/LpPc4.jpg" alt="enter image description here"></p> <p>나는 테마를 변경 시도

<style name="MyWorkspaceDetailTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar"> 

     <item name="android:popupMenuStyle">@style/MyPopupMenu</item> 

</style> 

<style name="MyPopupMenu" parent="@android:style/Widget.Holo.ListPopupWindow"> 
    <item name="android:dropDownWidth">30dp</item> 


</style> 

그러나 didn 성공하지 못 했어. 누구든지 도와 주실 수 있습니다.

답변

0

내가이 [http://keepsafe.github.io/2014/11/19/building-a-custom-overflow-menu.html] 자습서를 follwing을했지만 그것이

그래서 나는 또한 같은 대답을 찾고 있었어요 그리고 잠시 동안 검색 한 폭을 변경하는 방법을 언급하지 않았다, 유래에 대한 모든 질문에 답이 있었다. 마지막으로 나는 방법을 찾기 위해 developer.google.com을 파헤 쳐야했습니다.

http://developer.android.com/reference/android/widget/ListPopupWindow.html

당신이 방법 setContentWidth을 발견 할 것이다 (INT 폭) 실제로 우리의 작업을 수행한다. 여기

이 ==>

enter image description here

의 답

 //.......... Something on top 
     popupMenu.show(); 

     // Try to force some horizontal offset 
     try { 
      Field fListPopup = menuHelper.getClass().getDeclaredField("mPopup"); 
      fListPopup.setAccessible(true); 
      Object listPopup = fListPopup.get(menuHelper); 
      argTypes = new Class[] { int.class }; 
      Class listPopupClass = listPopup.getClass(); 

      // Get the width of the popup window 
      int width = (Integer) listPopupClass.getDeclaredMethod("getWidth").invoke(listPopup); 

      // Invoke setHorizontalOffset() with the negative width to move left by that distance 
      listPopupClass.getDeclaredMethod("setHorizontalOffset", argTypes).invoke(listPopup, -width); 
/*********** THIS LINE DOSE OUR WORK and increases the width of OverFlow Menu ******/ 
      listPopupClass.getDeclaredMethod("setContentWidth", argTypes).invoke(listPopup, width+200); 

      // Invoke show() to update the window's position 
      listPopupClass.getDeclaredMethod("show").invoke(listPopup); 
     } catch (Exception e) { 
      // Again, an exception here indicates a programming error rather than an exceptional condition 
      // at runtime 
      Log.w("Soemthing", "Unable to force offset", e); 
     } 

enter image description here

이다