Search in sources :

Example 1 with WindowDecorActionBar

use of com.android.internal.app.WindowDecorActionBar in project platform_frameworks_base by android.

the class Activity method setActionBar.

/**
     * Set a {@link android.widget.Toolbar Toolbar} to act as the {@link ActionBar} for this
     * Activity window.
     *
     * <p>When set to a non-null value the {@link #getActionBar()} method will return
     * an {@link ActionBar} object that can be used to control the given toolbar as if it were
     * a traditional window decor action bar. The toolbar's menu will be populated with the
     * Activity's options menu and the navigation button will be wired through the standard
     * {@link android.R.id#home home} menu select action.</p>
     *
     * <p>In order to use a Toolbar within the Activity's window content the application
     * must not request the window feature {@link Window#FEATURE_ACTION_BAR FEATURE_ACTION_BAR}.</p>
     *
     * @param toolbar Toolbar to set as the Activity's action bar, or {@code null} to clear it
     */
public void setActionBar(@Nullable Toolbar toolbar) {
    final ActionBar ab = getActionBar();
    if (ab instanceof WindowDecorActionBar) {
        throw new IllegalStateException("This Activity already has an action bar supplied " + "by the window decor. Do not request Window.FEATURE_ACTION_BAR and set " + "android:windowActionBar to false in your theme to use a Toolbar instead.");
    }
    // If we reach here then we're setting a new action bar
    // First clear out the MenuInflater to make sure that it is valid for the new Action Bar
    mMenuInflater = null;
    // If we have an action bar currently, destroy it
    if (ab != null) {
        ab.onDestroy();
    }
    if (toolbar != null) {
        final ToolbarActionBar tbab = new ToolbarActionBar(toolbar, getTitle(), this);
        mActionBar = tbab;
        mWindow.setCallback(tbab.getWrappedWindowCallback());
    } else {
        mActionBar = null;
        // Re-set the original window callback since we may have already set a Toolbar wrapper
        mWindow.setCallback(this);
    }
    invalidateOptionsMenu();
}
Also used : WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar) ToolbarActionBar(com.android.internal.app.ToolbarActionBar) ToolbarActionBar(com.android.internal.app.ToolbarActionBar) WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar)

Example 2 with WindowDecorActionBar

use of com.android.internal.app.WindowDecorActionBar in project platform_frameworks_base by android.

the class Activity method initWindowDecorActionBar.

/**
     * Creates a new ActionBar, locates the inflated ActionBarView,
     * initializes the ActionBar with the view, and sets mActionBar.
     */
private void initWindowDecorActionBar() {
    Window window = getWindow();
    // Initializing the window decor can change window feature flags.
    // Make sure that we have the correct set before performing the test below.
    window.getDecorView();
    if (isChild() || !window.hasFeature(Window.FEATURE_ACTION_BAR) || mActionBar != null) {
        return;
    }
    mActionBar = new WindowDecorActionBar(this);
    mActionBar.setDefaultDisplayHomeAsUpEnabled(mEnableDefaultActionBarUp);
    mWindow.setDefaultIcon(mActivityInfo.getIconResource());
    mWindow.setDefaultLogo(mActivityInfo.getLogoResource());
}
Also used : PhoneWindow(com.android.internal.policy.PhoneWindow) Window(android.view.Window) WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar)

Example 3 with WindowDecorActionBar

use of com.android.internal.app.WindowDecorActionBar in project android_frameworks_base by DirtyUnicorns.

the class Dialog method show.

/**
     * Start the dialog and display it on screen.  The window is placed in the
     * application layer and opaque.  Note that you should not override this
     * method to do initialization when the dialog is shown, instead implement
     * that in {@link #onStart}.
     */
public void show() {
    if (mShowing) {
        if (mDecor != null) {
            if (mWindow.hasFeature(Window.FEATURE_ACTION_BAR)) {
                mWindow.invalidatePanelMenu(Window.FEATURE_ACTION_BAR);
            }
            mDecor.setVisibility(View.VISIBLE);
        }
        return;
    }
    mCanceled = false;
    if (!mCreated) {
        dispatchOnCreate(null);
    } else {
        // Fill the DecorView in on any configuration changes that
        // may have occured while it was removed from the WindowManager.
        final Configuration config = mContext.getResources().getConfiguration();
        mWindow.getDecorView().dispatchConfigurationChanged(config);
    }
    onStart();
    mDecor = mWindow.getDecorView();
    if (mActionBar == null && mWindow.hasFeature(Window.FEATURE_ACTION_BAR)) {
        final ApplicationInfo info = mContext.getApplicationInfo();
        mWindow.setDefaultIcon(info.icon);
        mWindow.setDefaultLogo(info.logo);
        mActionBar = new WindowDecorActionBar(this);
    }
    WindowManager.LayoutParams l = mWindow.getAttributes();
    if ((l.softInputMode & WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION) == 0) {
        WindowManager.LayoutParams nl = new WindowManager.LayoutParams();
        nl.copyFrom(l);
        nl.softInputMode |= WindowManager.LayoutParams.SOFT_INPUT_IS_FORWARD_NAVIGATION;
        l = nl;
    }
    mWindowManager.addView(mDecor, l);
    mShowing = true;
    sendShowMessage();
}
Also used : WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar) LayoutParams(android.view.ViewGroup.LayoutParams) Configuration(android.content.res.Configuration) ApplicationInfo(android.content.pm.ApplicationInfo) WindowManager(android.view.WindowManager)

Example 4 with WindowDecorActionBar

use of com.android.internal.app.WindowDecorActionBar in project android_frameworks_base by ResurrectionRemix.

the class Activity method initWindowDecorActionBar.

/**
     * Creates a new ActionBar, locates the inflated ActionBarView,
     * initializes the ActionBar with the view, and sets mActionBar.
     */
private void initWindowDecorActionBar() {
    Window window = getWindow();
    // Initializing the window decor can change window feature flags.
    // Make sure that we have the correct set before performing the test below.
    window.getDecorView();
    if (isChild() || !window.hasFeature(Window.FEATURE_ACTION_BAR) || mActionBar != null) {
        return;
    }
    mActionBar = new WindowDecorActionBar(this);
    mActionBar.setDefaultDisplayHomeAsUpEnabled(mEnableDefaultActionBarUp);
    mWindow.setDefaultIcon(mActivityInfo.getIconResource());
    mWindow.setDefaultLogo(mActivityInfo.getLogoResource());
}
Also used : PhoneWindow(com.android.internal.policy.PhoneWindow) Window(android.view.Window) WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar)

Example 5 with WindowDecorActionBar

use of com.android.internal.app.WindowDecorActionBar in project android_frameworks_base by ResurrectionRemix.

the class Activity method setActionBar.

/**
     * Set a {@link android.widget.Toolbar Toolbar} to act as the {@link ActionBar} for this
     * Activity window.
     *
     * <p>When set to a non-null value the {@link #getActionBar()} method will return
     * an {@link ActionBar} object that can be used to control the given toolbar as if it were
     * a traditional window decor action bar. The toolbar's menu will be populated with the
     * Activity's options menu and the navigation button will be wired through the standard
     * {@link android.R.id#home home} menu select action.</p>
     *
     * <p>In order to use a Toolbar within the Activity's window content the application
     * must not request the window feature {@link Window#FEATURE_ACTION_BAR FEATURE_ACTION_BAR}.</p>
     *
     * @param toolbar Toolbar to set as the Activity's action bar, or {@code null} to clear it
     */
public void setActionBar(@Nullable Toolbar toolbar) {
    final ActionBar ab = getActionBar();
    if (ab instanceof WindowDecorActionBar) {
        throw new IllegalStateException("This Activity already has an action bar supplied " + "by the window decor. Do not request Window.FEATURE_ACTION_BAR and set " + "android:windowActionBar to false in your theme to use a Toolbar instead.");
    }
    // If we reach here then we're setting a new action bar
    // First clear out the MenuInflater to make sure that it is valid for the new Action Bar
    mMenuInflater = null;
    // If we have an action bar currently, destroy it
    if (ab != null) {
        ab.onDestroy();
    }
    if (toolbar != null) {
        final ToolbarActionBar tbab = new ToolbarActionBar(toolbar, getTitle(), this);
        mActionBar = tbab;
        mWindow.setCallback(tbab.getWrappedWindowCallback());
    } else {
        mActionBar = null;
        // Re-set the original window callback since we may have already set a Toolbar wrapper
        mWindow.setCallback(this);
    }
    invalidateOptionsMenu();
}
Also used : WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar) ToolbarActionBar(com.android.internal.app.ToolbarActionBar) ToolbarActionBar(com.android.internal.app.ToolbarActionBar) WindowDecorActionBar(com.android.internal.app.WindowDecorActionBar)

Aggregations

WindowDecorActionBar (com.android.internal.app.WindowDecorActionBar)15 ApplicationInfo (android.content.pm.ApplicationInfo)5 Configuration (android.content.res.Configuration)5 LayoutParams (android.view.ViewGroup.LayoutParams)5 Window (android.view.Window)5 WindowManager (android.view.WindowManager)5 ToolbarActionBar (com.android.internal.app.ToolbarActionBar)5 PhoneWindow (com.android.internal.policy.PhoneWindow)5