繁体   English   中英

导航抽屉右下角图标android

[英]navigation drawer bottom right icon android

我已经在我的应用程序中使用图标调整了导航抽屉,如图1所示,似乎没问题。 我希望谷歌地图的菜单右下方有图标。

图1figure2

码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map);
    setupSlideMenu();
}

private void setupSlideMenu() {
    mPlanetTitles = getResources().getStringArray(R.array.planets_array);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout1);
    addIcon();
    mDrawerList = (ListView) findViewById(R.id.left_drawer1);

    // Set the adapter for the list view
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mPlanetTitles));
    // Set the list's click listener
    mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
    log("setupSlideMenu", false);
}

private void addIcon() {
    mDrawerToggle = new ActionBarDrawerToggle(
    this,                   /* host Activity */
    mDrawerLayout,          /* DrawerLayout object */
    R.drawable.ic_drawer,   /* nav drawer icon to replace 'Up' caret */
    R.string.drawer_open,   /* "open drawer" description */
    R.string.drawer_close   /* "close drawer" description */
    ) {
        /** Called when a drawer has settled in a completely closed state. */
        public void onDrawerClosed(View view) {
            getActionBar().setTitle(mTitle);
        }

        /** Called when a drawer has settled in a completely open state. */
        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(mDrawerTitle);
        }
    };
    // Set the drawer toggle as the DrawerListener
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Pass the event to ActionBarDrawerToggle, if it returns true, then it has handled the app icon touch event
    if (mDrawerToggle.onOptionsItemSelected(item)) {
      return true;
    }
    // Handle your other action bar items...
    return super.onOptionsItemSelected(item);
}

任何想法? 提前致谢!

使用BottomDrawerToggle 解决方案非常简单:

  1. 使用重力BOTTOM将ImageView添加到android.R.id.content FrameLayout

  2. 通过将右/左边距设置为其可绘制宽度的一半的负值,使得ImageView半可见。

  3. 已解析的内部资源action_bar_icon_vertical_padding并将其用作图像视图的底部填充

     int id = Resources.getSystem().getIdentifier("action_bar_icon_vertical_padding", "dimen", "android"); float padding = mActivity.getResources().getDimension(id); 
  4. 创建SlidingDrawable并计算如何在draw(Canvas canvas)方法中抽屉滑入/滑出时动态隐藏drawable。 通过使用抽屉的可见像素量剪切Rect来隐藏Drawable。

     public void draw(Canvas canvas) { float pixelsVisible = mOffset * mMinusShadow; int target = (int) ((mWrapped.getIntrinsicWidth()/2)+pixelsVisible); if(mGravity == GravityCompat.START || mGravity == Gravity.LEFT) canvas.clipRect(target, 0, mWrapped.getIntrinsicWidth(), mWrapped.getIntrinsicHeight()); else canvas.clipRect(0, 0, mWrapped.getIntrinsicWidth() - target,mWrapped.getIntrinsicHeight()); this.mWrapped.draw(canvas); canvas.restore(); } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM