2016-08-20 78 views
1

將工具欄高度(wrap_content改爲40dp)更改(減小)後,標題仍爲center_vertical,但菜單項偏向底部。怎麼修?謝謝。更改工具欄高度後如何將菜單項對齊center_vertical

enter image description here

代碼:

toolbar.inflateMenu(R.menu.menu_toolbar); 

XML(如果我不改變layout_height = 「40dp」,那就沒問題)

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="40dp" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentTop="true" 
    android:layout_centerInParent="true" 
    android:background="?attr/colorAccent" 
    android:minHeight="?attr/actionBarSize" 
    app:contentInsetEnd="0dp" 
    app:contentInsetStart="0dp" 
    app:titleTextAppearance="@style/Toolbar.TitleText" /> 

菜單項XML:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context=".MainActivity" 
android:gravity="end|center"> 
<item 
    android:id="@+id/action_add" 
    android:icon="@drawable/ic_add_black_24dp" 
    android:orderInCategory="10" 
    android:title="添加" 
    app:showAsAction="always" /> 
<item 
    android:id="@+id/action_delete" 
    android:icon="@drawable/ic_remove_black_24dp" 
    android:orderInCategory="10" 
    android:title="刪除" 
    app:showAsAction="always" /> 

<item 
    android:id="@+id/action_start" 
    android:icon="@drawable/ic_play_arrow_black_24dp" 
    android:orderInCategory="10" 
    android:title="開啓" 
    app:showAsAction="always" /> 

<item 
    android:id="@+id/action_stop" 
    android:icon="@drawable/ic_stop_black_24dp" 
    android:orderInCategory="10" 
    android:title="停止" 
    app:showAsAction="always" /> 

</menu> 

[工具欄]

+0

添加代碼,使人們可以幫助 –

+0

謝謝,我只是添加代碼 – qcm217

+0

嘗試添加'=了minHeight「40dp」'在工具欄的佈局。 – pRaNaY

回答

0

您的問題是Toolbar的默認行爲。沒有官方API來設置垂直居中的圖標。

下面的代碼是非官方的方式。

public class CustomToolbar extends Toolbar { 

    public CustomToolbar(Context context) { 
     super(context); 
    } 

    public CustomToolbar(Context context, @Nullable AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public CustomToolbar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
     super.onLayout(changed, l, t, r, b); 

     for(int i = 0; i < getChildCount(); i++) { 
      View child = getChildAt(i); 
      if (child instanceof ActionMenuView) { 
       child.setTop(0); // FIXME: Move child in vertically center to be exact 
      } 
     } 
    } 
} 

在您的佈局:

<{replace here with package name}.CustomToolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorAccent" 
     ... /> 
+0

它運作良好!非常感謝! – qcm217

+1

一個評論,只適用於slimer工具欄,不適用於fatto toobar,也許它可以修改爲更靈活 – qcm217

相關問題