2015-04-01 7 views
13

क्या सॉफ्ट बटन बार और स्टेटस बार टॉगर के आकार को पाने के लिए एंड्रॉइड में कोई तरीका है? या इन दोनों सलाखों की ऊंचाई के बिना स्क्रीन ऊंचाई पाने के लिए एक तरीका है? (वे हमेशा एक ही नहीं कर रहे हैं, उदाहरण के लिए नेक्सस 7 को देखो)स्टेटस बार और सॉफ्ट कुंजी बटन बार की ऊंचाई कैसे प्राप्त करें?

उत्तर

26

स्थिति पट्टी की ऊंचाई

स्थिति पट्टी की ऊंचाई एक डिवाइस में, स्क्रीन आकार पर निर्भर करता है, उदाहरण के लिए 240 X 320 स्क्रीन आकार के साथ स्थिति पट्टी ऊंचाई 320 x 480 स्क्रीन आकार के साथ एक डिवाइस के लिए 20px है, स्थिति पट्टी ऊंचाई 25px है, 480 x 800 स्थिति पट्टी ऊंचाई के साथ एक डिवाइस के लिए

: 38px

होना चाहिए जिससे कि मैं आपकी गतिविधि के onCreate() पद्धति पर स्थिति पट्टी की ऊंचाई प्राप्त करने के लिए स्थिति पट्टी ऊंचाई

Rect rectangle = new Rect(); 
Window window = getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectangle); 
int statusBarHeight = rectangle.top; 
int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int titleBarHeight= contentViewTop - statusBarHeight; 

Log.i("*** Value :: ", "StatusBar Height= " + statusBarHeight + " , TitleBar Height = " + titleBarHeight); 

प्राप्त करने के लिए इस स्क्रिप्ट का उपयोग करने के लिए सलाह देते हैं, इस विधि का उपयोग

public int getStatusBarHeight() { 
     int result = 0; 
     int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); 
     if (resourceId > 0) { 
      result = getResources().getDimensionPixelSize(resourceId); 
     } 
     return result; 
} 

शीतल कुंजी बटन बार

एंड्रॉइड किटकैट (4.4) में लेआउट पैडिंग सेट करने के लिए यह विधि बहुत उपयोगी है। इसका उपयोग करके, आप अपने लेआउट पर सॉफ्ट बटन बार ओवरलैपिंग से बच सकते हैं।

getRealMetrics विधि एपीआई 17 के साथ ही उपलब्ध है और +

@SuppressLint("NewApi") 
private int getSoftButtonsBarHeight() { 
    // getRealMetrics is only available with API 17 and + 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
     DisplayMetrics metrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     int usableHeight = metrics.heightPixels; 
     getWindowManager().getDefaultDisplay().getRealMetrics(metrics); 
     int realHeight = metrics.heightPixels; 
     if (realHeight > usableHeight) 
      return realHeight - usableHeight; 
     else 
      return 0; 
    } 
    return 0; 
} 

संदर्भ:

Height of status bar in Android

Dimension of soft buttons bar

+1

वाह धन्यवाद बहुत इस उत्तर के लिए। मैंने सोचा कि दूसरी विधि एक ही समय में स्थिति और सॉफ्टबटन बार दोनों में काम नहीं करेगी, अनुमान लगाओ कि मैं गलत था, मैंने पहले से ही इसका परीक्षण किया है और यह काम करता है। : डी भी बेहतर, यह काम करता है और एपीआई 16 भी! – Joske369

+0

@ आपका स्वागत है। मैं अब संपादित करता हूं ;-) –

+0

स्टेटसबार नरम बटन बार होने पर केवल एक समस्या है, पहली विधि 25 पिक्सेल लौटाती है और सॉफ्टबूटन विधि 48 पिक्सल (सोनी एक्सपीरिया टैबलेट एस) – Joske369

संबंधित मुद्दे