2014-10-20 7 views
20

मैं अपने कस्टम देखने के निर्माता में निम्नलिखित फोन कर रहा हूँ में कस्टम दृश्य परिणामों में textSize स्थापना:विशाल पाठ

private void style(Resources.Theme theme, AttributeSet attrs) { 
    TypedArray a = theme.obtainStyledAttributes(
      attrs, 
      R.styleable.StackedTextView, 
      0, 0); 

    try { 
     DebugTool.assertTrue(holdr != null, "View holder has not been properly intialized."); 
     String line1 = a.getString(R.styleable.StackedTextView_line1); 
     setLine1(line1); 
     String line2 = a.getString(R.styleable.StackedTextView_line2); 
     setLine2(line2); 

     line1Size = a.getDimension(R.styleable.StackedTextView_line1_textSize, 20); 
     line2Size = a.getDimension(R.styleable.StackedTextView_line2_textSize, 20); 
     if (line1Size > 0) { 
      holdr.textLine1.setTextSize(line1Size); 
     } 
     if (line2Size > 0) { 
      holdr.textLine2.setTextSize(line2Size); 
     } 

    } finally { 
     a.recycle(); 
    } 
} 

यह 2 textfields के लिए पाठ और पाठ का आकार निर्धारित करने की अपेक्षा की जाती है।

मेरे पास टेक्स्ट सामग्री (जो ठीक काम करता है) के स्ट्रिंग स्वरूपों के अतिरिक्त मेरे attr.xml में निम्न है।

<attr name="line1_textSize" format="dimension" /> 
    <attr name="line2_textSize" format="dimension" /> 

जब मैं इस दृश्य का उपयोग व एक्सएमएल के माध्यम से एक आयाम का उपयोग पाठ का आकार निर्धारित करते हैं,

 <com.me.app.view.component.StackedTextView 
      android:id="@+id/overview_total_reviews" 
      app:line1="40" 
      app:line2="Rating" 
      style="@style/OverviewStackedText" 
      app:line1_textSize="10sp" 
      app:line2_textSize="12sp" 
      /> 

पाठ की उम्मीद की तुलना में काफी बड़ा होने समाप्त होता है। मैं केवल क्रमश: 10 और 12sp सेट कर रहा हूं, और टेक्स्ट आकार 30sp की तरह हैं।

क्या कोई देख सकता है कि मैं क्या गलत कर रहा हूं? क्या मुझे यह सुनिश्चित करने के लिए डिस्प्लेमैट्रिक्स के साथ कुछ करने की ज़रूरत है कि चीजें ठीक से स्केल हो जाएं?

संपादित करें: कुछ स्पष्टीकरण

आयाम उठाया हो रही है जोड़ना। जब मैं अपने कस्टम विशेषता (xml में) का उपयोग करके अलग-अलग टेक्स्ट आकार सेट करता हूं तो पाठ बदलता है। मैंने getDimensionPixelSize का उपयोग करने का भी प्रयास किया है।

ऐसा लगता है कि गणना/आयाम पुनर्प्राप्ति गलत है। 1sp (या डीपी) एक महत्वपूर्ण परिवर्तन में परिणाम बदल जाते हैं।

उत्तर

32

प्रयास करें बजाय निम्नलिखित:

line1Size = a.getDimensionPixelSize(R.styleable.StackedTextView_line1_textSize, 0); 
line2Size = a.getDimensionPixelSize(R.styleable.StackedTextView_line2_textSize, 0); 

if (line1Size > 0) { 
    holdr.textLine1.setTextSize(TypedValue.COMPLEX_UNIT_PX, line1Size); 
} 
if (line2Size > 0) { 
    holdr.textLine2.setTextSize(TypedValue.COMPLEX_UNIT_PX, line2Size); 
} 
+0

यह सही समाधान के लिए कुछ स्पष्टीकरण जोड़ने के लिए, मैं पहली बार पिक्सल में आयाम को पुनः प्राप्त करने के लिए आवश्यक है और फिर आयाम मैं था की इकाई/प्रकार पारित करके पाठ का आकार सेट दूसरे तर्क में गुजर रहा है। Yeesh। – loeschg

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