मैं एंड्रॉइड लॉलीपॉप पर एक विस्तारित ऊंचाई टूलबार / एक्शन बार कैसे घोषित कर सकता हूं?


88

मैंने Google डिज़ाइन ऐप बार दिशानिर्देशों में विस्तारित ऊंचाई ऐप बार देखा है । एंड्रॉइड लॉलीपॉप में मैं इन्हें कैसे लागू करूं?

जवाबों:


144

इसे प्राप्त करने के लिए आपको नए टूलबार विजेट का उपयोग करने की आवश्यकता है । टूलबार के पास अंतरिक्ष की मात्रा को घोषित करने के लिए न्यूनतम ऊंचाई है जो बटन (और कार्यों) के लिए उपयोग की जाती है।

नीचे दिए गए उदाहरण में, हम ऊंचाई निर्धारित कर रहे हैं 128dp (जो कि 56dp + 72dp है जैसा कि कल्पना में परिभाषित किया गया है), लेकिन android:minHeightमानक actionBarSize(जो आमतौर पर 56dp है) के रूप में रखते हुए । इसका अर्थ है कि बटन और क्रियाएं 56dp में लंबवत रूप से तैनात होने के लिए विवश हैं। तब हम android:gravityशीर्षक को निचले स्थान पर रखने के लिए उपयोग कर सकते हैं ।

<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 का उपयोग कर रहे हैं, तो android.support.v7.widget.Toolbarइसके बजाय उपयोग करने के लिए घोषणा बदलें और इसका उपयोग करें विशेषताएँ।


3
यदि उपयोग करने layout_heightका तरीका है, तो मुझे उम्मीद है कि यहां मानसून द्वारा वर्णित वर्कअराउंड भी एक वर्कअराउंड नहीं है, लेकिन जाने का उचित तरीका है? code.google.com/p/android/issues/detail?id=77874
थॉमस केलर

3
मैं आयामों के लिए भी भावों को घोषित करने में सक्षम होना चाहूंगा, लेकिन हम नहीं कर सकते।
क्रिस बन्स

37
बोनस अंक के लिए, वेतन वृद्धि का उपयोग करते हुए एक्शन बार को आकार दें, उदाहरण के लिए @dimen/action_bar_size_x2, और फोन पर 112dp का उपयोग करें, टैबलेट पर 128dp
रोमन

7
android:paddingBottombuttonGravityसेट करने पर अजीब रिक्ति का परिचय देता है bottomtitleMarginBottomविशेषता यहां बेहतर विकल्प की तरह लगता है, नहीं?
पॉल बर्क

5
@ रोमनरिक कैलेंडर ऐप में विस्तारित टूलबार कैसे काम करता है? कोई संकेत
रघुनंदन 11

3

आपके प्रश्न के लिए धन्यवाद, इसका उत्तर, और देशी और सहायक में टूलबार के कार्यान्वयन के लिए और अधिक :)

और हम अधिक खेल सकते हैं। हम, रनटाइम पर, हाइट और मिनिमलहाइट के साथ खेल सकते हैं।

ऊँचाई टूलबार की ऊँचाई है, यह सरल है, हर शरीर को समझता है, और गुरुत्वाकर्षण उस ऊँचाई के अनुसार कार्य करता है।

न्यूनतम ऊंचाई अधिक मुश्किल है और न्यूनतम 56dp पर नहीं होनी चाहिए। इस minHeight का उपयोग आपके menuItem की पंक्ति को रखने के लिए किया जाता है। यह लाइन आपके मिनीहाइट के मध्य में है।

तो आप अपने अंतर को देखने के लिए इस कोड को अपनी गतिविधि में जोड़ सकते हैं। :)

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);
    }

जहां टूलबार है:

toolbar = (टूलबार) findViewById (R.id.toolbar);

यह करते समय आप प्राप्त करते हैं: यहां छवि विवरण दर्ज करें

लेकिन अगर आप एनीमेशन छोड़ते हैं तो आप प्राप्त करते हैं: यहां छवि विवरण दर्ज करें

यही कारण है कि, अपने टूलबार को एंड्रॉइड पर सेट करना: लेआउट_हाइट से रैप_ कॉन्टेंट ज्यादातर मामलों में एक अच्छा विकल्प है, क्योंकि टूलबार अपनी सामग्री के अनुसार इसकी ऊंचाई को अनुकूलित करेगा (और आप रनटाइम पर सामग्री को बदल सकते हैं :)

और यह भी है कि आप अपने टूलबार के आकार को रनटाइम पर कैसे बदलते हैं।

धन्यवाद आप एक्शनबार पर किए गए अद्भुत काम के लिए क्रिस बैन्स।


@ मोहम्मदहदी मैं कल्पना कर रहा हूं कि पोस्टिक्स को कुछ इस तरह परिभाषित किया जाएगा:boolean postICS = Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN;
dm78
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.