Android फ़ंक्शन View.setPadding(int left, int top, int right, int bottom)केवल px में मान स्वीकार करता है, लेकिन मैं dp में पैडिंग सेट करना चाहता हूं। क्या इसके आसपास कोई रास्ता है?
जवाबों:
कोड करने के लिए सीधे
int padding_in_dp = 6; // 6 dps
final float scale = getResources().getDisplayMetrics().density;
int padding_in_px = (int) (padding_in_dp * scale + 0.5f);
getResources()कि एक ऐसा कार्य है जो एक गतिविधि द्वारा विरासत में मिला है, लेकिन मैं इन पंक्तियों का उपयोग कस्टम लिस्टव्यू एडेप्टर में करने की कोशिश कर रहा हूं। अगर मैं कॉल नहीं कर सकता तो क्या ऐसा कोई तरीका है getResources()?
यदि आप XML फ़ाइल में आयाम (dp या जो भी) परिभाषित करते हैं (जो वैसे भी बेहतर है, कम से कम ज्यादातर मामलों में), तो आप इस कोड का उपयोग करके इसका पिक्सेल मान प्राप्त कर सकते हैं:
context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name)
Dp प्रोग्रामेटिक रूप से वैल्यू कन्वर्ट करने का एक बेहतर तरीका है:
int value = 200;
int dpValue = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
value,
context.getResources().getDisplayMetrics());
फिर dpValueअपनी विधि पर लागू होते हैं , उदाहरण के लिए:setPadding(dpValue,dpValue,dpValue,dpValue);
आप किसी विशिष्ट DPI मान के लिए पिक्सेल की गणना कर सकते हैं: http://forum.xda-developers.com/showpost.php?p=6284958&postcount=31
मैं एक ही समस्या है। एकमात्र समाधान जो मुझे मिला है (यह वास्तव में आपकी मदद नहीं करेगा :)) इसे एक्सएमएल फ़ाइल में सेट करना है।
यदि आप कोड से घनत्व प्राप्त कर सकते हैं, तो आप रूपांतरण का उपयोग कर सकते हैं: "स्क्रीन पिक्स में डुबकी इकाइयों का रूपांतरण सरल है: पिक्सल = डिप्स * (घनत्व / 160)।" ( http://developer.android.com/guide/practices/screens_support.html से )
संपादित करें: आप स्क्रीन घनत्व प्राप्त कर सकते हैं: http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi