Подтвердить что ты не робот

Установите значок NavigationDrawer правой стороной, используя AppCompat-V-21 Toolbar Widget

Я работаю над материальным дизайном, используя новейший виджет панели инструментов, представленный в AppCompact-V21, с ящиком навигации.

Меня беспокоит Как установить значок навигационного ящика в правую сторону панели инструментов. Хотя я могу открыть навигационный ящик справа, установив android:layout_gravity="right", но значок навигации по-прежнему отображается слева на панели инструментов.

При использовании старого Action Bar я могу создать панель пользовательских действий с кнопкой справа от значка пользовательского ящика и щелчком по значку пользовательского значка навигации открыть/закрыть ящик.

  • Каков способ установки значка навигационного ящика с правой стороны с помощью панели инструментов?
  • Как создать для него пользовательский вид?
4b9b3361

Ответ 1

Ну, чтобы настроить панель инструментов и настроить собственную кнопку навигации, вы можете добавить свой собственный значок на панель инструментов:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent" >

    <ImageButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="end"
       android:onClick="backButtonHandler"
       android:background="@drawable/ic_launcher" />

</android.support.v7.widget.Toolbar>

Затем вы можете определить свой backButtonHandler(View v) в своем классе активности и добавить функциональность по желанию.

Ответ 2

Я хочу переместить ActionBarDrawerToggle слева направо, и я использую библиотеку поддержки appcompat 21. Я не нашел для этого решения. Кажется, нам нужно создать пользовательский элемент в панели действий/панели инструментов, как предположил Абхинав Пури.

Вы сказали, что не знаете, как добавить пользовательский вид на свою панель инструментов, надеюсь, что это поможет вам или любому, кто борется с этой проблемой:

		toolbar = (Toolbar) findViewById(R.id.toolbar);

		if (toolbar != null) {
			setSupportActionBar(toolbar);
		}

		actionBar = getSupportActionBar();
		actionBar.setDisplayHomeAsUpEnabled(true);
		actionBar.setHomeButtonEnabled(true);
		actionBar.setDisplayShowHomeEnabled(true);
		actionBar.setDisplayShowCustomEnabled(true);

		ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
		layoutParams.gravity = Gravity.RIGHT;
		actionBar.setCustomView(
				getLayoutInflater().inflate(R.layout.custom_top_bar, null),
				layoutParams);
		
		ImageButton rightToggle =(ImageButton) toolbar.findViewById(R.id.rightToggle);
		
		rightToggle.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if (mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) {
					mDrawerLayout.closeDrawer(Gravity.RIGHT);
				} else {
					mDrawerLayout.openDrawer(Gravity.RIGHT);
				}
			}
		});

Ответ 3

Вы можете сделать это очень легко, если знаете, как это работает. Большинство ящиков Android используют кнопку запуска приложения в качестве кнопки выдвижного ящика, эту силу тяжести кнопки нельзя изменить, Все, что вам нужно сделать, это назначить кнопке выдвижного ящика еще одну кнопку, которую вы создаете на панели действий (кнопка меню), вы даете ей значок и действие в onOptionsItemSelected.

if (item.getItemId() == android.R.id.home) {
    if(mDrawerLayout.isDrawerOpen(mLinearLayout)) {
        mDrawerLayout.closeDrawer(mmLinearLayout);
    }
    else {
    // open the drawer
    }
}

у вас будет примерно такой же код, как и этот, измените имя android.R.id.home кнопкой Id, о которой я говорил выше.