开发者

Is it possible to put Android ActionBar on the bottom?

i'm developing an application to an Android Tablet (XOOM开发者_运维百科), and i would like to know if it is possile to put the action bar on the bottom of the screen, instead of the top (which is the default option).

Thanks.


if you're getting your ActionBar in an Activity you could just add this android:uiOptions="splitActionBarWhenNarrow" to your manifest for that specific Activity.

That worked for me :)


Yes it is possible like this,try this.

 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();

        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜