2012-11-28 30 views
6

Tôi biết đã có nhiều câu hỏi ActionBar nhưng dường như họ không giải quyết được vấn đề của tôi. Tôi có thể nhổ ActionBar trong trình giả lập của mình, nhưng khi tôi chạy chương trình trên thiết bị của mình (chế độ chân dung Nexus 7) thì ActionBar sẽ không bị chia nhỏ. Tất cả các biểu tượng 'chồng lên' trên đầu trang, ngay cả các tab của tôi tạo ra một danh sách thả xuống. Tôi đã cố gắng để buộc các vấn đề bằng cách làm cho các mục trình đơn tên rất dài và tôi có họ thiết lập để: android: showAsAction = "always | withText". Chỉ cần chắc chắn, tôi đã lấy mẫu mã, chạy nó trên giả lập thấy nó hoạt động và sau đó đặt nó trên thiết bị của tôi để avail không có. Dưới đây là biểu hiện của tôi:Android ActionBar sẽ không chia nhỏ trên thiết bị

<uses-sdk 
    android:minSdkVersion="14" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme"> 
    <activity 
     android:name=".MainActivity" 
     android:uiOptions="splitActionBarWhenNarrow" 
     android:label="@string/title_activity_main"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

tôi đã lùng sục các trang web nhưng không thể tìm thấy một giải pháp. Bất kỳ trợ giúp được đánh giá cao.

+0

Tôi có cùng một vấn đề. Tôi đọc ở đâu đó rằng 'splitActionBar' chỉ áp dụng cho điện thoại, không cho máy tính bảng nhưng tôi hy vọng đó là một huyền thoại ... – Ridcully

Trả lời

7

Theo this SO item, thanh tác vụ chỉ được chia nhỏ khi chiều rộng có sẵn nhỏ hơn 480dp. Tuy nhiên, theo số this article của Dianne Hackborn của Google, chiều rộng chân dung của Nexus 7 là 600dp. Vì vậy, đó là lý do không có chia tách.

Tôi đồng ý với bạn rằng việc chia tách phải phụ thuộc vào mối quan hệ giữa không gian có sẵn và các mục sẽ được hiển thị, không phải chỉ trên không gian có sẵn.

+0

Thật điên rồ, cảm ơn vì đã đào bới. Tôi chỉ ngạc nhiên là vậy. –

7

Tôi biết câu hỏi này là khá cũ nhưng tôi đã tìm ra một cách để buộc các actionbar để Buttom trên Nexus 7 (và có thể các thiết bị khác) và tôi nghĩ rằng tôi muốn chia sẻ giải pháp của tôi:

Nơi mã này trong Hoạt động của bạn:

/** 
* {@inheritDoc} 
*/ 
@Override 
public Resources getResources() { 
    return new ResourceFix(super.getResources()); 
} 

private class ResourceFix extends Resources { 
    private int targetId = 0; 

    ResourceFix(Resources resources) { 
     super(resources.getAssets(), resources.getDisplayMetrics(), resources.getConfiguration()); 
     targetId = Resources.getSystem().getIdentifier("split_action_bar_is_narrow", "bool", "android"); 
    } 

    /** 
    * {@inheritDoc} 
    */ 
    @Override 
    public boolean getBoolean(int id) throws Resources.NotFoundException { 
     return targetId == id || super.getBoolean(id); 
    } 
} 

Điều này sẽ buộc giá trị "split_action_bar_is_narrow" nội bộ thành true. Nó có thể không phải là cách tốt nhất để làm điều này nhưng nó dường như là cách duy nhất tôi đã tìm thấy.

+1

Rất hay. Hy vọng nó được một số tầm nhìn. Đó là một câu hỏi phổ biến ở đó – dinigo

+0

Không thể tin được. Làm tốt lắm! –

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