0

我发现了很多关于如何子类化 textview 和垂直显示文本的信息。

我正在尝试在文本旁边显示一颗星,但我遇到了问题。也许你对此有一些想法。

子类:

public class VerticalTextView extends TextView
  {
final boolean topDown;

public VerticalTextView( Context context, AttributeSet attrs )
{
    super( context, attrs );
    final int gravity = getGravity();
    if ( Gravity.isVertical( gravity )
            && ( gravity & Gravity.VERTICAL_GRAVITY_MASK ) == Gravity.BOTTOM )
    {
        setGravity( ( gravity & Gravity.HORIZONTAL_GRAVITY_MASK )
                | Gravity.TOP );
        topDown = false;
    }
    else
    {
        topDown = true;
    }
}

@Override
protected void onMeasure( int widthMeasureSpec, int heightMeasureSpec )
{
    super.onMeasure( heightMeasureSpec, widthMeasureSpec );
    setMeasuredDimension( getMeasuredHeight(), getMeasuredWidth() );
}

@Override
protected void onDraw( Canvas canvas )
{
    TextPaint textPaint = getPaint();
    textPaint.setColor( getCurrentTextColor() );
    textPaint.drawableState = getDrawableState();

    canvas.save();

    if ( topDown )
    {
        canvas.translate( getWidth(), 0 );
        canvas.rotate( 90 );
    }
    else
    {
        canvas.translate( 0, getHeight() );
        canvas.rotate( -90 );
    }

    canvas.translate( getCompoundPaddingLeft(), getExtendedPaddingTop() );

    getLayout().draw( canvas );
    canvas.restore();
}

}

我正在用我的片段中的这段代码设置星星:

ItemTextView.setCompoundDrawablesWithIntrinsicBounds(0, 0, android.R.drawable.btn_star_big_on, 0); 

不显示星号。只有空格。和想法???

子类在列表视图中使用。在特定条件下,列表视图的一项我想在它旁边放一个星,所以**我认为我必须通过代码来完成。

4

2 回答 2

1

您可以android:drawableLeft在 xml 布局中使用属性。

http://developer.android.com/reference/android/widget/TextView.html#attr_android:drawableLeft

于 2012-07-11T14:45:52.903 回答
0

尝试在布局 xml 中使用 TableLayout,然后使用它的行,这比通过代码更容易。

于 2012-07-11T14:50:59.940 回答