Padding Toolbar Android API 21

193

Bagaimana cara menyingkirkan lapisan tambahan di Toolbar baru dengan Android SDK API versi 21 (perpustakaan dukungan)?

Saya berbicara tentang panah merah pada gambar ini: masukkan deskripsi gambar di sini

Berikut adalah kode yang saya gunakan:

<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>

Seperti yang Anda lihat saya telah mengatur semua padding yang relevan ke 0, tetapi masih ada padding di sekitar Spinner. Apa yang telah saya lakukan salah atau apa yang harus saya lakukan untuk menyingkirkan lapisan tambahan?

Sunting Beberapa orang mempertanyakan mengapa saya mencoba melakukan ini.

Sesuai spesifikasi Desain Bahan, pemintal harus 72dp dari sisi kiri desc

Saya perlu menetralkan padding yang Google pasang untuk menempatkan spinner saya dengan benar: desc

Edit 2

Sesuai jawaban Chris Bane di bawah ini, saya mengatur contentInsetStart ke 0. Untuk perpustakaan dukungan Anda harus menggunakan namespace aplikasi:

<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>

Saya harap ini membantu seseorang, itu membuat saya bingung selama beberapa hari.

James Cross
sumber
4
apakah Anda juga berhasil menghapus bantalan atas / bawah? Saya mencoba tetapi tidak ada yang terjadi bahkan mengatur semua contentInsetXproperti ke 0dp.
patrickjason91
sama seperti @ patrickjason91, apakah mungkin untuk menyelaraskan ImageView dengan atas Toolbar (gambar memiliki w, h: wrap_content) di dalam Toolbar? Saya sudah mencoba semuanya tetapi tidak berhasil .. Tujuan saya adalah memiliki sesuatu seperti bookmark gambar pita "menggantung" dari bagian atas Toolbar, bertaruh selalu ada beberapa padding yang saya tidak bisa menghilangkannya
Ewoks

Jawaban:

280

contentInsetStartInset kiri disebabkan oleh Toolbar yang secara default 16dp.

Ubah ini menjadi 72dp untuk menyelaraskan ke baris kunci.

Pembaruan untuk perpustakaan dukungan v24.0.0:

Untuk mencocokkan spesifikasi Material Design ada atribut tambahan contentInsetStartWithNavigationyang secara default adalah 16dp. Ubah ini jika Anda juga memiliki ikon navigasi.

Chris Banes
sumber
Terima kasih banyak atas ini. Tampaknya agak aneh untuk menjauh dari padding dan margin. Apakah ini 5 hal Android?
James Cross
1
ContentInsetStart digunakan untuk inset dari UI toolbar apa pun yang disediakan (misalnya ikon navigasi).
Chris Banes
Dan bagaimana Anda menyelaraskan tombol radio dengan ikon di bilah alat? Saya memiliki masalah serupa: stackoverflow.com/questions/26623042/...
Ferran Negre
Ada juga titleMarginStart attr untuk padding judul
menyimpang
2
pengaturan contentInsetStartWithNavigationke 0 melakukan trik untuk saya dengan dukungan-v4: 25.0.1
Quentin G.
145

Jawaban di atas benar tetapi masih ada satu hal yang mungkin membuat masalah (Setidaknya itu membuat masalah bagi saya)

Saya menggunakan yang berikut ini dan tidak berfungsi dengan baik pada perangkat yang lebih lama -

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

Kuncinya di sini cukup gunakan yang berikut -

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

dan singkirkan -

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

Dan sekarang itu akan berfungsi dengan baik di semua perangkat.

Semoga ini bisa membantu.

Varundroid
sumber
ini mungkin perilaku default. Terima kasih =)
Luciano Rodríguez
2
Tidak berfungsi untuk CollapsingToolBarLayout. Tolong bantu aku .
Aslam Hossin
menambahkan android: padding = "0dp" membantu saya
AITAALI_ABDERRAHMANE
1
bersama dengan 4 yang disebutkan di atas, app:contentInsetStartWithNavigationdapat membantu memperbaiki hal-hal jika belum cukup
computingfreak
10

Simpley menambahkan dua baris ini di toolbar. Kemudian kita mendapatkan bcoz ruang sisi kiri baru dihapus secara default 16dp.

android:contentInsetStart="0dp"
app:contentInsetStart="0dp"
Amit Walke
sumber
9

Seandainya ada orang lain yang tersandung di sini ... Anda dapat mengatur bantalan juga, misalnya:

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

int padding = 200 // padding left and right

toolbar.setPadding(padding, toolbar.getPaddingTop(), padding, toolbar.getPaddingBottom());

Atau contentInset :

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);
bekerja
sumber
Anda tidak perlu mengubah padding menjadi dp dan memperhitungkan kerapatan tampilan.
Seseorang di suatu tempat
3

Inilah yang saya lakukan dan berfungsi dengan baik di setiap versi Android.

toolbar.xml

<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/toolbar"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:background="@color/primary_color"
    app:theme="@style/ThemeOverlay.AppCompat"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

    <TextView
        android:id="@+id/toolbar_title"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="16dp" <!-- Add margin -->
        android:layout_marginStart="16dp"
        android:gravity="left|center"
        android:text="Toolbar Title" <!-- Your title text -->
        android:textColor="@color/white" <!-- Matches default title styles -->
        android:textSize="20sp"
        android:fontFamily="sans-serif-medium"/>

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

MyActivity.java (Untuk menyembunyikan judul bilah alat default)

getSupportActionBar().setDisplayShowTitleEnabled(false); // Hide default toolbar title

Hasil dengan Keylines Shown

masukkan deskripsi gambar di sini

Michael
sumber
3

Jadikan bilah alat Anda seperti:

<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>

Anda perlu menambahkan

contentInset

atribut untuk menambahkan spasi

ikuti tautan ini untuk lebih banyak - Tip Android

Aneh Thakur
sumber
3

Kombinasi dari

android:padding="0dp" Di xml untuk Bilah Alat

dan

mToolbar.setContentInsetsAbsolute(0, 0) Dalam kode

Ini berhasil untuk saya.

Jraco11
sumber
1

ini berfungsi untuk saya di ponsel Android 7.11 saya:

<!-- TOOLBAR -->
<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:contentInsetStartWithNavigation="0dp">

    <TextView
        style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
        android:id="@+id/toolbar_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/create_account_title"
        android:textColor="@color/color_dark_grey"/>

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

catatan: Saya sama sekali tidak berhasil dengan padding = 0, atau contentInsetLeft = 0, atau contentInsetStart = 0

Seseorang disuatu tempat
sumber
0

Ok jadi jika Anda membutuhkan 72dp, tidak bisakah Anda menambahkan perbedaan padding dalam file xml? Dengan cara ini Anda menjaga Inset / Padding default Android yang mereka ingin kita gunakan.

Jadi: 72-16 = 56

Untuk itu: tambahkan padding 56dp untuk menempatkan diri Anda pada indent / margin total 72dp.

Atau Anda bisa mengubah nilai dalam file Dimen.xml. itulah yang saya lakukan sekarang. Itu mengubah segalanya, seluruh tata letak, termasuk ToolBar ketika diimplementasikan dengan cara Android baru yang tepat.

File Sumber Daya Dimen

Tautan yang saya tambahkan menunjukkan nilai Dimen pada 2dp karena saya mengubahnya tetapi secara default ditetapkan pada 16dp. Hanya FYI ...

JamisonMan111
sumber
-2
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
Ahmet Zorer
sumber