202

Android SDK API バージョン 21 (サポート ライブラリ) を使用して、新しいツールバーの余分なパディングを取り除くにはどうすればよいですか?

私はこの写真の赤い矢印について話している: ここに画像の説明を入力

私が使用しているコードは次のとおりです。

<android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="?attr/colorPrimary"
        android:padding="0dp"
        android:layout_margin="0dp">

        <RelativeLayout
            android:id="@+id/action_bar_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="0dp"
            android:padding="0dp"
            android:background="#000000">

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"/>

        </RelativeLayout>
</Toolbar>

ご覧のとおり、関連するすべてのパディングを 0 に設定しましたが、Spinner の周りにはまだパディングがあります。余分なパディングを取り除くために何をする必要がありますか?

編集 なぜ私がこれをやろうとしているのか疑問に思う人もいます.

マテリアル デザインの仕様によると、スピナーは左側から 72 dp にする必要があります。説明

スピナーを適切に配置するために、Google が配置したパディングを中和する必要があります。説明

編集 2

以下の Chris Bane の回答に従って、contentInsetStart を 0 に設定します。サポート ライブラリについては、アプリの名前空間を使用する必要があります。

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

     <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="@dimen/action_bar_height"
        android:background="?attr/colorPrimary"
        android:contentInsetStart="0dp"
        android:contentInsetLeft="0dp"
        app:contentInsetLeft="0dp"
        app:contentInsetStart="0dp"
        app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

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

これが誰かの役に立てば幸いです。数日間混乱していました。

4

10 に答える 10

290

左のインセットはcontentInsetStart、デフォルトで 16 dp のツールバーによって発生します。

これを 72 dp に変更して、キーラインに合わせます。

サポート ライブラリ v24.0.0 の更新:

マテリアル デザインの仕様に合わせてcontentInsetStartWithNavigation、デフォルトで 16 dp の属性が追加されています。ナビゲーション アイコンもある場合は、これを変更します。

于 2014-10-21T20:42:14.287 に答える
147

上記の答えは正しいですが、問題を引き起こす可能性のあることがまだ1つあります(少なくともそれは私にとって問題を引き起こしました)

以下を使用しましたが、古いデバイスでは正しく動作しません -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"
app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

トリックはここにあります-次を使用するだけです-

app:contentInsetLeft="0dp"
app:contentInsetStart="0dp"

そして取り除く -

android:contentInsetStart="0dp"
android:contentInsetLeft="0dp"

これで、すべてのデバイスで問題なく動作するはずです。

それが役に立てば幸い。

于 2014-12-05T05:41:16.007 に答える
4

の組み合わせ

android:padding="0dp" ツールバーの xml 内

mToolbar.setContentInsetsAbsolute(0, 0) コード内

これは私にとってはうまくいきました。

于 2016-11-18T22:46:51.073 に答える
3

ツールバーを次のようにします。

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/menuToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="0dp"
android:background="@color/white"
android:contentInsetLeft="10dp"
android:contentInsetRight="10dp"
android:contentInsetStart="10dp"
android:minHeight="?attr/actionBarSize"
android:padding="0dp"
app:contentInsetLeft="10dp"
app:contentInsetRight="10dp"
app:contentInsetStart="10dp"></android.support.v7.widget.Toolbar>

追加する必要があります

contentInset

間隔を追加する属性

詳細については、このリンクをたどってください - Android のヒント

于 2015-09-09T13:00:48.597 に答える
0

72 dp が必要な場合は、xml ファイルにパディングの違いを追加できませんか? このようにして、Android が使用するデフォルトの Inset/Padding を保持します。

つまり: 72-16=56

したがって、56 dp のパディングを追加して、インデント/マージンの合計を 72 dp にします。

または、Dimen.xml ファイルの値を変更することもできます。それが私が今していることです。新しい適切な Android の方法で実装された場合、ツールバーを含むレイアウト全体がすべて変更されます。

Dimen リソース ファイル

追加したリンクは、変更したため 2 dp の Dimen 値を示していますが、デフォルトでは 16 dp に設定されていました。参考までに...

于 2015-12-02T06:11:37.687 に答える