是否可以将Android ActionBar置于底部?

时间:2011-08-12 10:48:51

标签: android-actionbar android xoom

我正在开发Android平板电脑(XOOM)的应用程序,我想知道是否可以将操作栏放在屏幕的底部,而不是顶部(这是默认选项)

感谢。

2 个答案:

答案 0 :(得分:2)

如果您在Action中获取ActionBar,则可以将此android:uiOptions =“splitActionBarWhenNarrow”添加到该特定Activity的清单中。

这对我有用:)

答案 1 :(得分:2)

是的,有可能这样,试试这个。

 public void setActionBArAtBottom(View layoutView, Intent intent,
            Context context, ContentValues componentIds) throws Exception {
        if (componentIds != null) {
            setValues(componentIds);
        } else {
            System.out
                    .println("Provide appropriate information to set ActionBar at bottom");
            try {
                throw new UnsufficientResourcesException();
            } catch (UnsufficientResourcesException e) {
                e.printStackTrace();
            }
        }
        // getting the parent of screen..actually this is the child of root
        // parent...
        ViewGroup screenParent = (ViewGroup) layoutView.getParent().getParent();
        // now getting actionbarview...as follows...
        View actionBArView = ((ViewGroup) screenParent.getChildAt(0))
                .getChildAt(0);
        // now getting framelayout that is custom layout to display actionbar at
        // the bottom...
        FrameLayout customActionBarFrameLayout = (FrameLayout) layoutView
                .findViewById(BOTTOM_ACTION_BAR_LAYOUT_ID);
        // now remove actionbarView from its parent view...
        ViewGroup actionBarViewParent = removeFromParent(actionBArView);
        removeTitleAndIcon((ViewGroup) actionBArView);
        // now setting actionbar view to the framlayout...
        customActionBarFrameLayout.addView(actionBArView);

        // get the custombar layout....
        View customTitleBarLayout = LayoutInflater.from(context).inflate(
                NEW_TITLE_BAR_LAYOUT, null);
        // setting icon to titile bar...
        ((ImageView) customTitleBarLayout.findViewById(NEW_TITLE_ICON__ID))
                .setImageDrawable(getActivityIcon(intent, context));
        // setting title...
        ((TextView) customTitleBarLayout.findViewById(NEW_TITLE_ID))
                .setText(((SherlockActivity) context).getTitle());
        // now set this layout to
        actionBarViewParent.addView(customTitleBarLayout);

    }

    // method use to remove child from its parent...
    private ViewGroup removeFromParent(View child) {
        // removing child...
        ViewGroup parentGroup = (ViewGroup) child.getParent();
        parentGroup.removeView(child);
        return parentGroup;
    }

    // this method will set application icon to custom title bar layout...
    private Drawable getActivityIcon(Intent intent, Context context) {
        // getting the current activity icon set...
        Drawable drawable = null;
        try {
            drawable = context.getPackageManager().getActivityIcon(intent);
        } catch (NameNotFoundException e) {
            e.printStackTrace();
        }
        return drawable;
    }

    // remove title and icon from bottombar...
    private void removeTitleAndIcon(ViewGroup actionBarViewGroup) {
        actionBarViewGroup.removeAllViews();
    }

    private void setValues(ContentValues contentValues) throws Exception {
        try {
            BOTTOM_ACTION_BAR_LAYOUT_ID = contentValues
                    .getAsInteger(BOTTOM_ACTION_BAR_FRAME_LAYOUT_ID);
            NEW_TITLE_BAR_LAYOUT = contentValues
                    .getAsInteger(NEW_TITLE_BAR_LAYOUT_ID);
            NEW_TITLE_ICON__ID = contentValues
                    .getAsInteger(NEW_TITLE_ICON_IMAGEVIEW_ID);
            NEW_TITLE_ID = contentValues.getAsInteger(NEW_TITLE_VIEW_ID);
        } catch (Exception e) {

            throw new UnsufficientResourcesException();

        }
    }
}