我想擴展一個VerticalTextView類,它可以使內容顯示垂直文本。 例如: android:text="Hello"
它表明這樣的:我自己的自定義textview可以垂直顯示文本,但有些問題!誰可以幫我
H
e
l
l
o
我嘗試重寫OnDraw函數。代碼如下:
public class VerText extends TextView {
public VerText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public VerText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public VerText(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
TextPaint textPaint = getPaint();
textPaint.drawableState = getDrawableState();
textPaint.setColor(Color.BLACK);
String textString = (String) getText();
//textString = "Hello";
for (int i = 0; i < textString.length(); i++) {
canvas.drawText(textString.charAt(i) + "", getMeasuredWidth()/2
- getTextSize()/2, (i + 1) * getTextSize(), textPaint);
}
getLayout().draw(canvas);
}
} 這很簡單吧? 我有問題就在這裏,當我使用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestActivity" >
<com.example.testmycustom.VerText
android:id="@+id/verText1"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="119dp" />
</RelativeLayout>
,並//textString = "Hello";
有用的,它運作良好, 然而,當我使用
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".TestActivity" >
<com.example.testmycustom.VerText
android:id="@+id/verText1"
android:layout_width="60dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Hello"//!!!!only added this one!!!! and canceled comment textString="Hello"
android:layout_marginLeft="119dp" />
</RelativeLayout>
有顯示兩個你好!一個是垂直的,另一個是水平的。有人告訴我爲什麼?謝謝!實現這一目標的一些新方法受到歡迎。
這是什麼? 'getLayout()。draw(canvas);'你在這裏做什麼? – Simon
如果刪除了getLayout()。draw(canvas),它將不會顯示。您可以嘗試〜 – daimajia
然後您正在做其他事情。請顯示您的onCreate()並編輯您的XML,以便*完全*您正在使用而沒有評論。您不需要將畫布繪製到控件上,這就是onDraw的用途,您正在重寫超類。 – Simon