2011-12-11 13 views
25

मुझे TextView के साथ कोई समस्या है। मैं इसके ऊपर कोई मार्जिन/पैडिंग नहीं चाहता हूं।TextView शीर्ष मार्जिन को कैसे निकालें?

<TextView android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/ptp_hour" 
      android:textColor="@color/black" 
      android:textSize="100dp" 
      android:height="100dp" 
      android:layout_marginTop="0dp" 
      android:paddingTop="0dp" 
      android:includeFontPadding="false" 
      android:maxLines="1" 
      android:text="10"/> 

मेरे TextView इस तरह और textSize और height एक ही मूल्य की तैयारी में हैं के बावजूद लग रहा है, वहाँ फॉन्ट के ऊपर एक जगह नहीं है। यह मुझे परेशान करता है क्योंकि मैं फ़ॉन्ट के शीर्ष पर अपेक्षाकृत एक और दृश्य रखना चाहता हूं। क्या यह अंतर फ़ॉन्ट में शामिल है?

TextView in RelativeLayout

और एक और सवाल: यदि मैं ऊपर और 7dp नीचे से अपने डिवाइस पर पूरी तरह से काम करता है से है कि मार्जिन 20dp में पता चला, मैं भरोसा कर सकते हैं कि यह अन्य स्क्रीन पर एक समान तरीके से व्यवहार करेंगे? (इन मार्जिन बटन के लिए कर रहे हैं)

+0

आप क्या कर रहे हैं की एक छवि पोस्ट कर सकते हैं: सबसे अच्छा समाधान मैं उचित समय में मिल सकता है TextView के onDraw विधि ओवरराइड करने के लिए और फ़ॉन्ट मैट्रिक्स 'शीर्ष और चढ़ाई मूल्यों के बीच अंतर के लिए कैनवास समायोजित करने के लिए था देख के? –

+0

हाँ कृपया एक छवि पोस्ट करें –

+0

ऐसा लगता है कि फ़ॉन्ट में शीर्ष अंतर होगा। ऊंचाई को 100 डीपी के रूप में रखने की कोशिश करें लेकिन टेक्स्ट साइज (102 डीपी या 105 डीपी आदि) को बढ़ाएं। – Squonk

उत्तर

43

android:includeFontPadding="false" का उपयोग करके मुझे इसी तरह की स्थिति में बहुत मदद मिली।

+0

धन्यवाद! यह मेरे फ़ॉन्ट को ठीक से मेरे टेक्स्ट व्यू के शीर्ष के साथ संरेखित नहीं करता है। – TSL

+1

धन्यवाद, बस जो मैं खोज रहा था। यह, वैसे डिफ़ॉल्ट होना चाहिए। – HGPB

+10

थोड़ा काम करता है, लेकिन मेरी समस्या को पूरी तरह से हल नहीं कर सकता है। –

2

आपको क्या करने की जरूरत है फॉन्ट के शीर्ष करने के लिए अन्य दृश्य सापेक्ष रखा, और ऐसी है कि वह फॉन्ट के शीर्ष से मेल खाता है डुबकी में यह एक नकारात्मक android:layout_marginBottom देते हैं, के लिए है। यदि फ़ॉन्ट में मार्जिन है, तो मुझे नहीं लगता कि ऐसा करने का एक बेहतर तरीका है।

1

हां यह स्थान डिफ़ॉल्ट रूप से शामिल है। आप मेरे खोज क्षेत्र के अनुसार उस स्थान को हटाने में सक्षम नहीं हैं। तो आपको ऐसा दृष्टिकोण रखने के लिए कुछ तर्क लागू करने की आवश्यकता है।

छवि नीचे देखें:

enter image description here

इसकी नहीं एक अच्छा विचार है, लेकिन आप नीचे दिए गए कोड की तरह कर सकते हैं:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:background="#ffffff"> 
    <TextView android:layout_width="wrap_content"   
     android:layout_height="wrap_content"   
     android:id="@+id/ptp_hour"   
     android:textColor="@android:color/black"   
     android:textSize="100sp" 
     android:lineSpacingMultiplier="0.8" 
     android:scrollY="-100dp" 
     android:scrollX="100dp" 
     android:text="10"/> 
    <TextView 
     android:text="10" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:textColor="#00FFFFFF" 
     android:shadowColor="#000000" 
     android:shadowDy="-50" 
     android:shadowRadius="1" 
     android:textSize="100dp"/> 

</LinearLayout> 

यहाँ, पहले "10" अपने गुण और दूसरा एक की है जैसा कि मैंने आपके लिए निर्धारित किया है।

का आनंद लें। :))

+0

अद्यतन उत्तर देखें। –

+0

आप एंड्रॉइड होने के साथ इसे प्राप्त कर सकते हैं: lineSpacingExtra नकारात्मक मान पर सेट है। लेकिन उनमें से दोनों को समस्या है कि टेक्स्ट व्यू जी, क्यू, पी जैसे सीमाओं से बाहर वर्णों को क्लिप करेगा। –

+0

मजेदार हैक, मुझे लगता है। लेकिन अगर मैं नीचे अतिरिक्त जगह भी हटाना चाहता हूं तो उपयोगी नहीं है। – user3390963

9

मुझे वही समस्या थी जहां android:includeFontPadding=false सेटिंग में मदद नहीं मिली थी।

FontMetricsInt fontMetricsInt; 
@Override 
protected void onDraw(Canvas canvas) { 
    if (adjustTopForAscent){ 
     if (fontMetricsInt == null){ 
      fontMetricsInt = new FontMetricsInt(); 
      getPaint().getFontMetricsInt(fontMetricsInt); 
     } 
     canvas.translate(0, fontMetricsInt.top - fontMetricsInt.ascent); 
    } 
    super.onDraw(canvas); 
} 
+0

यह लगभग एक छोटे से फ़ॉन्ट के साथ टेक्स्टव्यू में काम करता है, यह पूरी तरह से संरेखित करता है। एक 74 एसपी फ़ॉन्ट पर, इतना नहीं। लेकिन इस ठीक समाधान के लिए +1। –

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