Android Lollipop'ta uzatılmış yükseklikte bir Araç Çubuğu / İşlem Çubuğu nasıl beyan ederim?


Yanıtlar:


144

Yeni Araç Çubuğunu kullanmanız gerekiyor başarmak widget'ını . Araç Çubuğu, düğmeler (ve eylemler) için kullanılan alan miktarını bildirmek için minimum yüksekliği için özel bir işleme sahiptir.

Aşağıdaki örnekte, yüksekliği 128 dp (spesifikasyonda tanımlandığı gibi 56 dp + 72 dp) olarak ayarlıyoruz, ancak android:minHeightstandart olarak actionBarSize(genellikle 56 dp) tutuyoruz. Bu, düğmelerin ve eylemlerin dikey olarak üstteki 56dp'ye yerleştirilmek üzere sınırlandırıldığı anlamına gelir. Daha sonra android:gravitybaşlığı altta konumlandırmak için kullanabiliriz .

<Toolbar
    android:id="@+id/toolbar"
    android:layout_height="128dp"
    android:layout_width="match_parent"
    android:minHeight="?android:attr/actionBarSize"
    android:background="?android:attr/colorPrimary"
    android:gravity="bottom" />

AppCompat kullanıyorsanız, android.support.v7.widget.Toolbarbunun yerine kullanmak için bildirimi değiştirin ve özniteliklerini kullanın.


3
Kullanmanın layout_heightyolu kullanılıyorsa , muson tarafından burada açıklanan geçici çözümün de bir geçici çözüm olmadığını, ancak doğru yol olduğunu bekliyorum? code.google.com/p/android/issues/detail?id=77874
Thomas Keller

3
Boyutlar için de ifadeler beyan etmeyi çok isterdim ama yapamayız.
Chris Banes

37
Bonus puanlar için, artışları kullanarak işlem çubuğunu @dimen/action_bar_size_x2boyutlandırın ve telefonlarda 112 dp, tabletlerde 128 dp kullanın
Roman Nurik

7
android:paddingBottombuttonGravityolarak ayarlandığında garip boşluklar ortaya çıkarır bottom. titleMarginBottomNiteleyecisi, burada daha iyi seçenek gibi görünüyor?
Paul Burke

5
@RomanNurik, takvim uygulamasındaki genişletilmiş araç çubuğu nasıl çalışır? Any hints
Raghunandan

3

Sorunuz, cevabı ve dahası araç çubuğunun yerel ve destek kitaplığında uygulanması için teşekkür ederiz :)

Ve daha fazla oynayabiliriz. Çalışma zamanında Yükseklik ve MinimalHeight ile oynayabiliriz.

Yükseklik Araç Çubuğu yüksekliğidir, basittir, her vücut anlar ve yerçekimi bu yüksekliğe göre hareket eder.

MinimalHeight daha karmaşıktır ve minimum 56dp'de olmamalıdır. Bu minHeight, menuItem'inizin satırını yerleştirmek için kullanılır. Bu çizgi minHeight değerinizin ortasındadır.

Böylece farkı kendiniz görmek için bu kodu faaliyetinize ekleyebilirsiniz. :)

Runnable toolBarAnimator=new Runnable() {
        @Override
        public void run() {
            if(postICS){
//                toolbar.setTranslationX(iteration);
//                toolbar.setElevation(iteration);
                toolbar.setMinimumHeight(iteration * 5);
                toolbar.getLayoutParams().height++;
            }
            uiThreadHanlder.postDelayed(this,16);
            iteration++;
            if(iteration>150)iteration=0;
        }
    };
    Handler uiThreadHanlder=new Handler();
    int iteration=0;


    @Override
    protected void onResume() {
        super.onResume();
        //launch the animation
        uiThreadHanlder.postDelayed(toolBarAnimator, 1000);
    }


    @Override
    protected void onPause() {
        super.onPause();
        //stop the animation
        uiThreadHanlder.removeCallbacks(toolBarAnimator);
    }

Araç çubuğu nerede:

araç çubuğu = (Araç Çubuğu) findViewById (R.id.toolbar);

Bunu yaparken şunları elde edersiniz: görüntü açıklamasını buraya girin

ancak animasyondan ayrılırsanız devam edin: görüntü açıklamasını buraya girin

Bu nedenle, araç çubuğunuzu android: layout_height öğesini wrap_content olarak ayarlamak çoğu durumda iyi bir seçenektir, çünkü Araç Çubuğu yüksekliğini içeriğine göre uyarlayacaktır (ve içeriği çalışma zamanında değiştirebilirsiniz :)

Ve bu aynı zamanda çalışma zamanında araç çubuğu boyutunuzu nasıl değiştireceğinizdir.

Eylem çubuğunda yaptığınız harika çalışma için Chris Banes'e teşekkürler.


@MohammadHadi PostICS'in şöyle tanımlanacağını hayal ediyorum:boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
dm78
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.