【问题标题】:Android, ActionBar tabs state detectionAndroid、ActionBar 选项卡状态检测
【发布时间】:2013-07-12 10:21:21
【问题描述】:

我正在使用 ActionBar 选项卡导航(使用操作栏 sherlock)。

如何检测标签栏的当前状态(堆叠、嵌入或下拉列表)??

【问题讨论】:

    标签: android tabs actionbarsherlock


    【解决方案1】:

    没有为此目的的公共 API 调用。


    警告:以下方法将来可能会停止工作

    不过有一些反射技巧:

    public boolean hasEmbeddedTabs(ActionBar actionBar){
        Boolean embedded = false;
        try {
            Class c = Class.forName("com.android.internal.app.ActionBarImpl");
            Field f = c.getDeclaredField("mHasEmbeddedTabs");
            f.setAccessible(true);
            embedded = f.getBoolean(actionBar);
            f.setAccessible(false);
        }catch (Exception e) {
            Log.e("MyApp","Not a fair play",e);
        }
        return embedded;
    }
    

    为了了解折叠状态:

    public boolean areTabsCollapsed(ActionBar actionBar){
        Boolean collapsed = false;
        try {
    
            Class c = Class.forName("com.android.internal.app.ActionBarImpl");
    
            Class c2 = Class.forName("com.android.internal.widget.ScrollingTabContainerView");
            Method m = c2.getDeclaredMethod("isCollapsed");
    
            Field f2 = c.getDeclaredField("mTabScrollView");
            f2.setAccessible(true);
            Object scrollView = f2.get(actionBar);
            if(scrollView != null){
                collapsed = (Boolean) m.invoke(scrollView);
            }
            f2.setAccessible(false);
    
    
        }catch (Exception e) {
            e.printStackTrace();
        }
        return collapsed;
    }
    

    【讨论】:

    • 谢谢。还有下拉列表状态呢??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-11
    • 2012-12-14
    • 2015-04-13
    • 1970-01-01
    相关资源
    最近更新 更多