2013-07-26 3 views
3

그림 1과 같이 탐색 용 서랍을 내 application에있는 아이콘으로 변경했습니다. 괜찮아 보입니다. Google지도처럼 내 메뉴의 오른쪽 하단에 아이콘이 나타납니다.내비게이션 창 하단 오른쪽 아이콘 android

figure1 figure2

코드 :

@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); 
} 

어떤 생각? 미리 감사드립니다.

답변

2

BottomDrawerToggle을 사용하십시오. 솔루션은 매우 간단했다 :

의 절반의 음수 값으로 왼쪽/오른쪽 여백을 설정하여

  • 제작 ImageView 절반 볼 BOTTOM 중력과 android.R.id.content FrameLayout이에

    1. 추가 ImageView 그것은 drawable 너비입니다.

    2. 내부 자원 action_bar_icon_vertical_padding 해결 된 이미지보기

      int id = Resources.getSystem().getIdentifier("action_bar_icon_vertical_padding", "dimen", "android"); 
      float padding = mActivity.getResources().getDimension(id); 
      
    3. 등재 SlidingDrawable 하단 패딩으로 이용 동적 draw(Canvas canvas) 방법 IN/OUT의 서랍 슬라이드로서 상기 그리기를 숨기는 방법으로 계산. Drawable은 서랍의 표시 픽셀 양을 Rect으로 잘라내어 숨 깁니다.

      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(); 
      } 
      
  • 관련 문제