0

Я разрабатываю приложение, которое использует боковой навигационный ящик. Я попытался сделать слайдер ящика навигации, и панель действий идет вправо, и я сделал. Однако, когда панель действий идет вправо, ListView в навигационном ящике не заполняет пробел. Он просто оставляет пустое пустое серое пространство. Пожалуйста помоги.Android-навигатор не заполняет пространство рабочего стола

Ниже мой код:

myActivity.xml:

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    tools:context=".currentJob" 
    xmlns:tools="http://schemas.android.com/tools"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <LinearLayout 
      xmlns:tools="http://schemas.android.com/tools" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:paddingTop="16dp" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      android:paddingLeft="@dimen/activity_horizontal_margin" 
      android:paddingRight="@dimen/activity_horizontal_margin" 
      android:orientation="vertical" 
      android:weightSum="1"> 

    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Random Text" 
      android:id="@+id/lbl_title" 
      android:gravity="center_horizontal" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:textStyle="bold" 
      android:textSize="@dimen/_20sdp" 
      android:layout_gravity="center_horizontal" /> 

    </LinearLayout> 
    </ScrollView> 

    <ListView 

     android:id="@+id/navList" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_gravity="left|start" 
     android:background="#ffeeeeee" 
     android:fitsSystemWindows="true" /> 

    </android.support.v4.widget.DrawerLayout> 

MyActivity.java

 protected void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_current_job); 

     //setup list header 
     listHeaderView = View.inflate(this,R.layout.menuheaderview, null); 

     //setup drawer 
     mDrawerList = (ListView)findViewById(R.id.navList); 
     mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); 
     double width=(getResources().getDisplayMetrics().widthPixels/100.00)*75; //drawer layout width in percentage 

     int w = (int)width; 

     DrawerLayout.LayoutParams params =      (android.support.v4.widget.DrawerLayout.LayoutParams) mDrawerList.getLayoutParams(); 
     params.width = w; 

     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeButtonEnabled(true); 
     getSupportActionBar().setHomeAsUpIndicator(R.drawable.icon_drawer); 

     mDrawerList.setLayoutParams(params); 
     addDrawerItems(); 
     setupDrawer(); 
    } 

addDrawerItems функционировать

private void addDrawerItems() { 

    //add items operations 
    mAdapter = new MyCustomAdapter(menu,this); 
    mDrawerList.setAdapter(mAdapter); 
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener()   { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(myActivity.this, "You selected ", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

функция setupDrawer

private void setupDrawer() { 
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
     R.string.drawer_open, R.string.drawer_close) { 

    /** Called when a drawer has settled in a completely open state. */ 
    public void onDrawerOpened(View drawerView) { 

     invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
    } 

    /** Called when a drawer has settled in a completely closed state. */ 
    public void onDrawerClosed(View view) { 

     invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
    } 

    @Override 
    public void onDrawerSlide(View drawerView, float slideOffset) { 
     super.onDrawerSlide(drawerView, slideOffset); 

     float xPositionOpenDrawer = mDrawerList.getWidth(); 
     float xPositionWindowContent = (slideOffset * xPositionOpenDrawer); 
     getActionBarView().setX(xPositionWindowContent); 
    } 
}; 
mDrawerToggle.setDrawerIndicatorEnabled(true); 
mDrawerToggle.setHomeAsUpIndicator(R.drawable.icon_drawer); 
mDrawerLayout.setDrawerListener(mDrawerToggle); 
} 

функция getActionBarView

public View getActionBarView() { 

    Window window = this.getWindow(); 
    final View decorView = window.getDecorView(); 
    final String packageName = getPackageName(); 
    final int resId =  this.getResources().getIdentifier("action_bar_container", "id", packageName); 
    final View actionBarView = decorView.findViewById(resId); 
    return actionBarView; 
} 

Пожалуйста, помогите мне, я действительно старался изо всех сил, но до сих пор не может найти какие-либо решения.

NavigationDrawerProblem

+1

Вы можете приложить снимки экрана? – saeed

+0

Я прикрепил свой скриншот. Спасибо за помощь. –

+0

Попробуйте добавить 'android: fitsSystemWindows =" true "' в ваш 'android.support.v4.widget.DrawerLayout'. –

ответ

0

Если вы хотите, чтобы эффект, рассмотреть возможность использования панели инструментов вместо ActionBar. Используйте поддержку объекта панели инструментов как панель действий. Это обеспечивает гибкость размещения панели инструментов в любом месте в файле макета, как и любой другой вид в макете.

Смежные вопросы