0

テキストビューをサブクラス化し、テキストを垂直に表示する方法に関する多くの情報を見つけました。

テキストの横に星を表示しようとしていますが、問題があります。多分あなたはこれについていくつかのアイデアを持っています。

サブクラス:

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); 

星は表示されません。空白のみです。とアイデア???

サブクラスはリストビューで使用されます。特定の条件下で、リストビューの1つのアイテムの横に星を付けたいので、**コードで行う必要があると思います。

4

2 に答える 2

1

android:drawableLeftxml レイアウトで属性を使用できます。

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 に答える