web-dev-qa-db-ja.com

ツールバーの戻るボタンを中央に配置する方法は?

サポートツールバーの戻るボタンを中央に配置しようとして問題があります。 ActionBarActivity内で使用しています。

_<Android.support.v7.widget.Toolbar xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:toolbar="http://schemas.Android.com/apk/res-auto"
    Android:id="@+id/toolbar"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:background="?attr/colorPrimary"
    Android:minHeight="?attr/actionBarSize"
    toolbar:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    toolbar:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
_

そして、次のようにアクティビティのonCreate()内にセットアップナビゲーションを設定します。

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

getSupportActionBar().setTitle(R.string.title_activity_scanner);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
_

しかし、私が得ているのはこれです: not centered back button screenshot あなたが見ることができるように、戻るボタンが見当違いです

編集:問題は、_?attr/actionBarSize_のカスタム値が40dpに設定されているように見えますが、代わりにタイトルが間違っていることが判明しました。

32
mewa

developer.Android.com から:

ツールバーは、ActionBarよりも焦点を絞った機能セットをサポートします。最初から最後まで、ツールバーには次のオプション要素の組み合わせが含まれる場合があります。

ナビゲーションボタン。これは、上矢印、ナビゲーションメニューの切り替え、閉じる、折りたたみ、完了、またはアプリが選択した別のグリフです。このボタンは、常にツールバーのコンテナ内のその他のナビゲーション宛先とそのコンテンツにアクセスするために使用するか、現在のコンテキストをツールバーで指定したままにする必要があります。 ナビゲーションボタンは、設定されている場合、ツールバーの最小の高さ内に垂直に配置されます。

したがって、minHeight属性をツールバーの高さ(layout_height)と同じに設定すると、戻る矢印は垂直方向の中央に配置されます。

80
Rick Sanchez

内部ActionBarActivity

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
  setSupportActionBar(toolbar);
  getSupportActionBat().setTitle("Hello World"); 
  getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  getSupportActionBar().setHomeButtonEnabled(true);

レイアウトコード:

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="@color/primary"
        app:theme="@style/ToolbarTheme"
        app:popupTheme="@style/Theme.AppCompat"/>

そしてスタイル:

 <style name="AppTheme.Base" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primaryDark</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowActionBar">false</item>
    <item name="windowActionBar">false</item>
</style>

<style name="AppTheme" parent="AppTheme.Base">

ツールバーは単なるビューグループであるため、任意の方法でスタイル設定できます。これが画像リンクです: ツールバーのサンプル

それが役に立てば幸い。

2
kamilmasta

これを実現する最良の方法は、ツールバーから通常の「戻る」ボタンを削除し、XMLレイアウトにカスタムImageButtonを追加して、それに画像を設定することです。このImageButttonは、ツールバー上の好きな場所に配置できます。

アクティビティレイアウトコードは次のようになります。

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <include
        Android:id="@+id/toolbar"
        layout="@layout/toolbar" />

    <ImageButton
        Android:layout_width="60dp"
        Android:layout_height="60dp"
        Android:id="@+id/button"
        Android:src="@drawable/attach_icon"
        Android:layout_alignParentTop="true"
        Android:layout_centerHorizontal="true" />

</RelativeLayout>
1
Pruthviraj

@Rick Sanchezの答えは仕事です、セットアップツールバーのlayout_heightはminHeightと同じです

私はツールバーのコンストラクタでボタンの重力を設定できるフィールドがあることを発見しました、mButtonGravity = a.getInteger(R.styleable.Toolbar_buttonGravity, Gravity.TOP);

、v7サポートツールバーはセットアップできません、mButtonGravity = Gravity.TOP;

0
act262

@ Rick Sanchez answer の便乗:-ツールバーのminHeight属性のサイズがわかっている場合は、次を使用できます。

Android:gravity="top"
app:titleMarginTop="@dimen/margin_to_center"

ツールバーでテキストを中央揃えにします。 Android:minHeight="?actionBarSize"を使用している場合、これは約13pです

0
AllDayAmazing

私にとっては、どのソリューションも機能しませんでした。私の場合、問題は私が適用したマージンでした:

 <Android.support.v7.widget.Toolbar
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content"
     ... >

     <View
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginBottom="10dp"
        Android:layout_marginTop="10dp" />

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

ツールバーに直接適用した後、ボタンは垂直方向の中央に配置されました。

 <Android.support.v7.widget.Toolbar
     Android:layout_width="match_parent"
     Android:layout_height="wrap_content"
     Android:layout_marginBottom="10dp"
     Android:layout_marginTop="10dp"
     ... >

     <View
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content" />

 </Android.support.v7.widget.Toolbar>
0
Markus

ボタンのサイズを作成56dpおよびscaleTypecenterに設定し、Appbarに余白を付けないでくださいアイコンが24x24寸法

0
Mahdi Astanei