0

ビューを実装するクラスがあります

**DrawView.class**
     public class DrawView extends View {
    Paint paint = new Paint();

 public DrawView(Context context, AttributeSet attrs){
    super(context, attrs);
 }

そして私のfile.xml

      <com.example.sliding.DrawView 
        android:id="@+id/tv_listRow_item1"
    android:tag="tv_listRow_item1_1"
    android:layout_height="0dip"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:gravity="center"
    android:width="100dip"
    android:height="30dip"
    android:background="@drawable/textview_listrow_border"/>

このビューの高さは 30 ディップです。この 30 ディップの 30% だけに色を付けるにはどうすればよいですか? 誰でも私に例をあげることができますか?お時間をいただきありがとうございます。

4

4 に答える 4

0

これを行う最も簡単な方法は、onDraw(Canvasキャンバス)関数をオーバーライドして、このような長方形を描くことだと思います。

    double mStart = -1;
    double mEnd = -1;

    public void addRectangle( double startInPercent, double endInPercent ) {
        if( startInPercent < 0 || endInPercent > 1 || endInPercent > startInPercent )
            return;

        mStart = startInPercent;
        mEnd = endInPercent;

        //this will make the view to refresh the UI
        invalidate();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        if( mStart >= 0 && mEnd >= 0)
            canvas.drawRect(0, getHeight() * mStart, getWidth(), getHeight() * mEnd, mPaint);
    }

このコードは、addRectangle()メソッドで指定された長方形を描画します。私の実装では、その関数のパラメーターをビューの高さの%ごとに設定する予定です。

これがそのdrawRect(...)呼び出しのドキュメントです。必要に応じて、上下左右に描画できるパラメータを変更します。

必要な色を取得するには、次のようにビューコンストラクターでmPaintを初期化する必要があります。

    Paint mPaint = new Paint();
    mPaint.setColor( Color.RED );

もちろん、これは可能な限り最も愚かなコードです。この2つの概念を試して、基本的に必要なものを取得できます。

これを行うためのメインクラス(およびAndorid UIのほとんどすべて)は次のとおりです。

于 2013-01-30T18:32:22.430 に答える
0

2つのパラメータを持つ関数が必要です。これは最初に色の始まりを示します。2番目は終わりを示します。hEIGHT=80dp。たとえば、最初のパラメータは20で、2番目のパラメータは30です。この間隔内のピクセルには色があります…..

ここに画像の説明を入力してください

于 2013-01-30T18:12:12.767 に答える
0

これが機能するかどうかは完全にはわかりませんが、30% の色と 70% の透明度の 9 パッチを作成し、適切なパーセンテージで 2 つの伸縮可能領域 (それぞれに 1 つ) を定義できます。9 パッチを伸ばす場合は、複数のストレッチ ゾーンの比率を尊重するはずなので、うまくいくと思います。

http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch

于 2013-01-30T17:25:08.437 に答える
0

1 つの方法は、LayerDrawable を使用することです

ただし、これはビューの高さが 80 dp に固定されている場合にのみ機能します。

drawable フォルダーに xml ファイルを作成します。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <アイテム>
      <形状>
          <ソリッド android:color="#FFFFFFFF" />
      </形状>
    </アイテム>
    <item android:top="10dp">
      <形状>
          <ソリッド android:color="#FF000000"/>
      </形状>
    </アイテム>
    <item android:top="60dp">
      <形状>
          <ソリッド android:color="#FFFFFFFF"/>
      </形状>
    </アイテム>
</layer-list>

これをビューの背景として設定します。

于 2013-01-30T17:45:21.700 に答える