Android API 21 Araç Çubuğu Dolgusu


193

Android SDK API sürüm 21 (destek kitaplığı) ile yeni Araç Çubuğundaki ekstra dolgudan nasıl kurtulurum?

Bu resimdeki kırmızı oklardan bahsediyorum: resim açıklamasını buraya girin

İşte kullanıyorum kodu:

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

Gördüğünüz gibi tüm ilgili dolguları 0'a ayarladım, ancak hala Spinner'ın etrafında dolgu var. Ne yanlış yaptım ya da ekstra dolgudan kurtulmak için ne yapmam gerekiyor?

Düzenleme Bazı bunu yapmaya çalışıyorum neden sorguluyorlar.

Material Design spesifikasyonlarına göre, spinner sol taraftan 72dp olmalıdır desc

Spinner'ımı düzgün bir şekilde yerleştirmek için Google'ın koyduğu dolguları etkisiz hale getirmem gerekiyor: desc

Düzenle 2

Chris Bane'nin aşağıdaki cevabına göre contentInsetStart'ı 0 olarak ayarladım. Destek kitaplığı için uygulama ad alanını kullanmanız gerekir:

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

Umarım bu birine yardımcı olur, birkaç gün boyunca kafam karıştı.


4
üst / alt dolguları da kaldırmayı başardınız mı? Denedim ama hiçbir şey contentInsetX0dp için tüm özellikleri ayarlayarak bile olmaz.
patrickjason91

@ patrickjason91 benzeri benzeri ImageView Toolbar top ile Araç Çubuğu üst (resimde w, h: wrap_content) hizalamak mümkün mü? Her şeyi deniyordum ama başaramadım .. Amacım Araç Çubuğunun üstünden "asılı" yer imi şerit görüntüsü gibi bir şey var, bahis her zaman ortadan kaldıramayacağım bazı dolgu var
Ewoks

Yanıtlar:


280

Sol iç contentInsetStartmetin, varsayılan olarak 16dp olan Araç Çubukları'ndan kaynaklanır.

Anahtar satırına hizalamak için bunu 72dp olarak değiştirin.

Destek kütüphanesi v24.0.0 güncellemesi:

Materyal Tasarımı spesifikasyonuna uyması için contentInsetStartWithNavigationvarsayılan olarak 16dp olan ek bir özellik vardır. Ayrıca bir gezinme simgeniz varsa bunu değiştirin.


Bunun için çok teşekkür ederim. Dolgu ve marjdan uzaklaşmak biraz garip görünüyor. Bu bir android 5 şey mi?
James Cross

1
ContentInsetStart, sağlanan herhangi bir araç çubuğundan (örneğin gezinme simgesi) eklemek için kullanılır.
Chris Banes

Radyo düğmesini araç çubuğundaki simgeyle nasıl hizalarsınız? Benzer sorunlarım var: stackoverflow.com/questions/26623042/…
Ferran Negre

Ayrıca başlık dolgusu için marginStart attr
deviant

2
contentInsetStartWithNavigation0 olarak ayarlamak , destek v4 ile benim için hile yaptı: 25.0.1
Quentin G.

145

Yukarıdaki yanıt doğrudur, ancak hala sorun yaratabilecek bir şey vardır (En azından benim için bir sorun yarattı)

Aşağıdakileri kullandım ve eski cihazlarda düzgün çalışmıyor -

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

Hile burada sadece aşağıdakileri kullanın -

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

ve kurtulun -

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

Ve şimdi tüm cihazlarda iyi çalışmalıdır.

Umarım yardımcı olur.


bu varsayılan davranış olabilir. Teşekkürler =)
Luciano Rodríguez

2
CollapsingToolBarLayout için çalışmıyor. Lütfen bana yardım et .
Aslam Hossin

android ekleme: padding = "0dp" bana yardımcı oldu
AITAALI_ABDERRAHMANE

1
Yukarıda belirtilen 4 ile birlikte, app:contentInsetStartWithNavigationhenüz yeterli değilse işleri düzeltmeye yardımcı olabilir
computingfreak

10

Simpley bu iki satırı araç çubuğuna ekler. Sonra varsayılan olarak 16dp yeni kaldırılan sol yan bcoz olsun.

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

9

Başka birinin burada tökezlemesi durumunda ... dolgu da ayarlayabilirsiniz , örneğin:

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

int padding = 200 // padding left and right

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

Veya contentInset :

toolbar.setContentInsetsAbsolute(toolbar.getContentInsetLeft(), 200);

doldurmayı dp'lere dönüştürmeniz ve ekran yoğunluğunu dikkate almanız gerekmez.
Birisi

3

İşte yaptığım şey ve Android'in her sürümünde mükemmel çalışıyor.

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 (Varsayılan araç çubuğu başlığını gizlemek için)

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

Gösterilen Anahtar Çizgilerle Sonuç

resim açıklamasını buraya girin


3

Araç çubuğunuzu aşağıdaki gibi yapın:

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

Eklemelisin

contentInset

boşluk ekleme özelliği

daha fazla bilgi için lütfen bu bağlantıyı takip edin - Android İpuçları


3

Kombinasyonu

android:padding="0dp" Araç Çubuğu için xml'de

ve

mToolbar.setContentInsetsAbsolute(0, 0) Kodda

Bu benim için çalıştı.


1

Android 7.11 telefonumda bu benim için çalışıyor:

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

not: padding = 0 veya contentInsetLeft = 0 veya contentInsetStart = 0 ile kesinlikle başarılı olamadım


0

Tamam, eğer 72dp'ye ihtiyacınız varsa, sadece xml dosyasında dolgu farkını ekleyemez misiniz? Bu şekilde, Android'lerin kullanmamızı istedikleri varsayılan Ekleme / Dolgu özelliğini korursunuz.

Yani: 72-16 = 56

Bunun için: toplam 72dp'lik bir girinti / marj koymak için 56dp dolgu ekleyin.

Veya Dimen.xml dosyalarındaki değerleri değiştirebilirsiniz. Ben şimdi bunu yapıyorum. Yeni uygun Android şekilde uygulandığında, Araç Çubuğu da dahil olmak üzere her düzeni, tüm düzeni değiştirir.

Kaynak Dosyasını Azalt

Eklediğim bağlantı, 2dp'deki Dimen değerlerini gösterdi çünkü değiştirdim, ancak varsayılan olarak 16dp olarak ayarlandı. Sadece FYI ...


-2
((Toolbar)actionBar.getCustomView().getParent()).setContentInsetsAbsolute(0,0);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.