2016-02-10 15 views
6

Tôi đang sử dụng mã để tùy chỉnh chiều cao của văn bản và chiều cao hàng trong chế độ xem điều hướng và nó hoạt động trên api21 + nhưng cùng một mã không hoạt động trong api 16. Làm cách nào tôi có thể làm việc ?tùy chỉnh kích thước mục menu và văn bản trong giao diện điều hướng

Code:

Tạo một phong cách và áp dụng nó vào NavigationView sử dụng app:theme

<style name="NavigationViewStyle"> 
    <item name="android:textSize">20sp</item> <!-- menu item text size--> 
    <item name="android:listPreferredItemHeightSmall">40dp</item><!-- menu item height--> 
</style> 

Và sau đó, áp dụng phong cách này để NavigationView sử dụng ứng dụng: chủ đề

<android.support.design.widget.NavigationView 
     ... 
     ...  
     app:theme="@style/NavigationViewStyle" 
     ... 
     ... 


</android.support.design.widget.NavigationView> 
+0

Lưu ý cho người khác: câu hỏi này đã được trả lời ở đây http://stackoverflow.com/ question/35453698/listpreferreditemheightsmall-is-not-working-on-api-16 – CKP78

Trả lời

7

Trong mã bạn có thể sử dụng mã này để tùy chỉnh chế độ xem văn bản. hãy thử điều này và cho tôi biết.

private final ArrayList<View> mMenuItems = new ArrayList<>(); 
    final Menu navMenu = navigationView.getMenu(); 
    // Install an OnGlobalLayoutListener and wait for the NavigationMenu to fully initialize 
    navigationView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      // Remember to remove the installed OnGlobalLayoutListener 
      navigationView.getViewTreeObserver().removeOnGlobalLayoutListener(this); 
      // Loop through and find each MenuItem View 
      for (int i = 0; i < navMenu.size(); i++) { 
       final String id = "nav_menuItem" + (i); 
       final MenuItem item = navMenu.findItem(getResources().getIdentifier(id, "id", getPackageName())); 
       navigationView.findViewsWithText(mMenuItems, item.getTitle(), View.FIND_VIEWS_WITH_TEXT); 
      } 
      // Loop through each MenuItem View and apply your custom Typeface 

      for (final View menuItem : mMenuItems) { 
       ((TextView) menuItem).setTypeface(fontLight, Typeface.NORMAL); 
      } 

     } 
    }); 
+0

làm cách nào để thay đổi cỡ chữ và khoảng cách giữa hai mục menu trong giao diện điều hướng? – jason

+0

@ jason bạn đang xem văn bản bây giờ bạn có thể gọi phương thức setTextsize và setpadding trên đó. – androidnoobdev

0

Kiểm tra thư mục res/values ​​của bạn, bạn có thể tìm thấy một thư mục res/values-v16 mà thực hiện một phong cách khác nhau

+0

Tôi havae vlaues, values-w820dp và values-v21. Tôi có nên xóa thứ gì đó không? – jason

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