में कनवर्ट करें sp
इकाइयों में TextView
के वर्तमान TextSize
की आवश्यकता है।पिक्सेल को sp
लेकिन getTextSize()
pixels
में आकार देता है। तो convert pixels to sp
का कोई तरीका है?
में कनवर्ट करें sp
इकाइयों में TextView
के वर्तमान TextSize
की आवश्यकता है।पिक्सेल को sp
लेकिन getTextSize()
pixels
में आकार देता है। तो convert pixels to sp
का कोई तरीका है?
देखें DisplayMetrics वर्ग, यह densityDpi
और scaledDensity
के लिए खाने हैं।
उदाहरण उपयोग:
float sp = px/getResources().getDisplayMetrics().scaledDensity;
बस स्पष्ट करने के लिए: 'DisplayMetrics' वर्ग में _fields_' densityDpi' और 'scaledDensity' है, विधियों नहीं। और स्केलिंग के लिए, कोई 'घनत्व डीपीआई' के बजाय 'घनत्व' फ़ील्ड का उपयोग करना चाहता है। –
कृपया पूछे गए प्रश्न का उत्तर दें। किसी वर्ग के नाम का उपयोग करना जिसका उत्तर किसी उत्तर के लिए उपयोग किया जा सकता है वह स्वयं उत्तर नहीं है। – Megakoresh
उपयोग इस
public static float pixelsToSp(Context context, float px) {
float scaledDensity = context.getResources().getDisplayMetrics().scaledDensity;
return px/scaledDensity;
}
आप चाहते हैं परीक्षण करता है, तो इस विधि का सही इस स्निपेट का उपयोग काम करता है, तो
एक्सएमएल
<TextView
android:id="@+id/txtHelloWorld"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"/>
<TextView
android:id="@+id/txtHelloWorld2"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
जावा
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView helloWorldTextView = (TextView) rootView.findViewById(R.id.txtHelloWorld);
TextView helloWorldTextView2 = (TextView) rootView.findViewById(R.id.txtHelloWorld2);
helloWorldTextView2.setTextSize(pixelsToSp(getActivity(), helloWorldTextView.getTextSize()));
टेक्स्टव्यू का फ़ॉन्ट आकार दोनों समान होना चाहिए।
सार्वजनिक क्षेत्र को देखने के लिए अजीब है जो रन टाइम पर समायोजित है लेकिन यह काम करता है। मानक डीपीआई 160 है, जो भी आपका डिवाइस डीपीआई है, 240 कहें, घनत्व और स्केल किए गए घनत्व 240/160 = 1.5 दिखाएंगे इस प्रकार आप पिक्सेल और एसपी: पीएक्स = 1.5 * एसपी
के बीच कनवर्ट करते हैं [यह जवाब] (http://stackoverflow.com/a/42108115/3681880) 'डीपी -> पीएक्स',' पीएक्स -> डीपी ',' एसपी से पीएक्स', और 'पीएक्स से एसपी' रूपांतरणों के लिए। – Suragch