2012-12-02 72 views
0

我試圖在TextView子類的畫布中居中文本。它看起來不錯在Eclipse中,但不是在裝置:無法在畫布中居中文本

的Eclipse:

enter image description here

設備:

enter image description here

還有一個原因,我想中心這樣的文字。我沒有在這裏解釋(也不在代碼中),因爲它不屬於這個問題。

我已經在使用dip和sps。

代碼:

package com.example.test2; 

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Rect; 
import android.util.AttributeSet; 
import android.widget.TextView; 

public class CenterTest extends TextView { 
    private Paint paint; 
    private Paint paint2; 
    private Rect bounds; 

    public CenterTest(Context context) { 
     super(context); 
    } 

    public CenterTest(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     paint = new Paint(); 
     paint2 = new Paint(); 
     bounds = new Rect(); 
    } 

    public void draw(Canvas canvas) { 
     canvas.save(); 

     int width = getWidth(); 
     int height = getHeight(); 

     //draw background 
     paint2.setColor(Color.rgb(0, 0, 0)); 
     paint.setStyle(Paint.Style.FILL); 
     canvas.drawRect(0, 0, width, height, paint2); 

     //measure text 
     paint.setTextSize(getTextSize()); 
     paint.getTextBounds(getText().toString(), 0, getText().toString().length(), bounds); 
     int textWidth = bounds.width(); 
     int textHeight = bounds.height(); 

     //center before drawing text 
     canvas.translate((width/2) - (textWidth/2), 0); 
     canvas.translate(0, (height/2) - (textHeight/2)); 

     //let TextView.onDraw() do the rest 
     super.onDraw(canvas); 

     canvas.restore(); 
    } 
} 

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" 
    > 
    <com.example.test2.CenterTest 
     android:layout_width="100dip" 
     android:layout_height="30dip" 
     android:text="label" 
     android:textColor="#ffffff" 
     android:singleLine="true" 
     android:textSize="12sp" 
    /> 
</RelativeLayout> 

也許原因是介於TextView.onDraw(),但是這200個多行代碼,我沒有時間,現在......甚至不知道它是否在那裏。

在此先感謝!

回答

0

嘗試使用機器人:比重=「中心」

<com.example.test2.CenterTest 
    android:layout_width="100dip" 
    android:layout_height="30dip" 
    android:text="label" 
    android:textColor="#ffffff" 
    android:singleLine="true" 
    android:textSize="12sp" 
    android:gravity="center" 
/> 
+1

沒有,我說我想中心的其他方式。 – Ixx