2014-03-27 61 views
0

我有文本視圖和一個可繪製的「點」,現在當我使用文本填充文本視圖時,有時有時會在文本較小時轉移到最左端,附近的文本時,文本是大在Android的Textview中將可繪製的文本留在文本中

我已經被拉伸到由Android留下的TextView的:drawableLeft =「@繪製/藍」 我想在TextView的 當文本之前設置到只剩8密度像素文本成爲2到3行,它在TextView的中心,我希望它在第一行的左邊。 請給出任何建議

<TextView 
    android:id="@+id/name" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/numberLookup" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="60dp" 
    android:drawableLeft="@drawable/blue" 
    android:ems="10" 
    android:fontFamily="sans-serif" 
    android:gravity="center" 
    android:textIsSelectable="false" 
    android:textSize="23sp" 
    android:textStyle="bold" 
    android:visibility="visible" /> 

任何人都可以幫助我嗎?

+0

加上'機器人:drawablePadding = 「8dp」,你會好的 –

+0

否它不工作:( – Hitesh

+0

是'android:ems =「10」'真的需要嗎? –

回答

0

這是一個drawableLeft的正常行爲,可以讓它走到最左邊的角落。相反,您可以在文本的開頭設置一個ImageSpan

final Spannable spannable = new SpannableString(getText(R.string.yourText)); 
spannable.setSpan(new ImageSpan(getDrawable(R.drawable.icon)), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
textView.setText(spannable); 

如果你有一個多行文本,每一個行應該以點開始繪製,你可以創建一個LeadingMarginSpan

public final class DotSpan implements LeadingMarginSpan { 

    private final Bitmap mSpan; 

    private final int mMargin; 

    public DotSpan(final Bitmap span) { 
     mSpan = span; 
     mMargin = span.geWidth(); 
    } 

    @Override 
    public void drawLeadingMargin(Canvas c, Paint p, int x, int dir, int top, 
      int baseline, int bottom, CharSequence text, int start, int end, 
      boolean first, Layout layout) 
    { 
     if (first) { 
      c.drawBitmap(mSpan, x, top, p); //not sure about coordinates if they are correct 
     } 
    } 

    @Override 
    public int getLeadingMargin(boolean first) 
    { 
     return mMargin; 
    } 
} 

,並設置它像

final Spannable spannable = new SpannableString(getText(R.string.yourMultilineText)); 
spannable.setSpan(new DotSpan(bitmap), 0, spannable.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
textView.setText(spannable); 
+0

新的ImageSpan(R.drawable.icon)錯誤顯示 - 無法將圖標轉換爲位圖 – Hitesh

+0

@Hitesh對不起,它應該是新的ImageSpan(getDrawable(R.drawable.icon));更新了我的答案。 –