37

Я добавил android.support.v7.widget.Toolbar в мое приложение, используя нижеприведенный код, теперь я хочу показать кнопку в правом конце панели инструментов, но не в состоянии сделать это.Ориентация кнопок на панели инструментов Android v7

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v7.widget.Toolbar 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@color/accent_color" 
    android:minHeight="?attr/actionBarSize" 
    android:layout_alignParentTop="true" 
    tools:context=".MyActivity" 
    android:theme="@style/ThemeOverlay.AppCompat.ActionBar"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/showevents" 
     android:textSize="12sp" 
     android:background="@null" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:textColor="@color/white" 
     android:text="UPCOMING \nEVENTS"/> 
</android.support.v7.widget.Toolbar> 

Я добавил приведенное ниже, но его не перемещали вправо.

android:layout_alignParentEnd="true" 
android:layout_alignParentRight="true" 

Прикрепленный изображение для справки:

enter image description here

ответ

94

Вы должны добавить android:layout_gravity="right" для вашей кнопки:

 <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:id="@+id/showevents" 
     android:textSize="12sp" 
     android:background="@null" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:textColor="#FFF" 
     android:text="UPCOMING \nEVENTS"/> 

enter image description here

+0

Лучше установить стиль кнопки для 'стиль = "@ стиль/Widget.AppCompat.Button.Borderless"' 'или использовать фон =" андроид: атр/selectableItemBackground "вместо фона @null для эффекта пульсации при касании в противном случае кнопка кажется отключенной. – Roel

+1

Совет: 'android: textAllCaps =" true "' можно использовать вместо того, чтобы писать все кепки 'android: text' самостоятельно. Тематические кнопки с материалами автоматически включают его, но на старых устройствах нормально иметь кнопки с прописными буквами. – TWiStErRob

+1

@Roel, '? SelectableItemBackgroundBorderless', чтобы иметь их обоих. – WindRider

5

Или изображение в правом верхнем углу:

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:minHeight="?attr/actionBarSize" 
    android:background="@color/colorPrimary" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:title="Edit Note"> 
    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="right" 
     android:id="@+id/submitEditNote" 
     android:src="@android:drawable/ic_menu_send" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" /> 
</android.support.v7.widget.Toolbar> 

Я надеюсь, что это помогает

0

Ваш путь является правильным, но взгляните на официальный документ: (Resourcs)

Создать меню пунктов:

<!-- "Mark Favorite", should appear as action button if possible --> 
<item 
    android:id="@+id/action_favorite" 
    android:icon="@drawable/ic_favorite_black_48dp" 
    android:title="@string/action_favorite" 
    app:showAsAction="ifRoom"/> 

<!-- Settings, should always be in the overflow --> 
<item android:id="@+id/action_settings" 
     android:title="@string/action_settings" 
     app:showAsAction="never"/> 

Добавить действие меню по ID

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.action_settings: 
      // User chose the "Settings" item, show the app settings UI... 
      return true; 

     case R.id.action_favorite: 
      // User chose the "Favorite" action, mark the current item 
      // as a favorite... 
      return true; 

     default: 
      // If we got here, the user's action was not recognized. 
      // Invoke the superclass to handle it. 
      return super.onOptionsItemSelected(item); 

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