0

私はほぼ3日間私を悩ませている問題を抱えています。カスタム配列アダプタを備えたListViewがあります。すべてがかなり標準的です。次に、レイアウトにカスタムImageViewがあります。スクロールすると画像が消えるので、カスタムImageViewに問題があると思います。

少しテストを行い、長方形のonDraw()メソッドを追加すると、常に表示されます。通常のImageViewも追加しましたが、常に表示されます。

問題は、画像が表示される場合と表示されない場合があるカスタムビューにあります。

ここにいくつかのコードがあります

カスタムビュー

 public class CropTopImageView extends ImageView {
        private static Paint paint;

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

    public CropTopImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public CropTopImageView(Context context) {
        super(context);
        init();
    }

    private void init(){
        setScaleType(ScaleType.MATRIX);
          paint = new Paint();
          paint.setStrokeWidth(20);
          paint.setColor(Color.RED);
          paint.setStyle(Paint.Style.STROKE);
    }

    @Override
    protected boolean setFrame(int l, int t, int r, int b) {

        Matrix matrix = getImageMatrix();
        float scale;
        int viewWidth = getWidth() - getPaddingLeft() - getPaddingRight();
        int viewHeight = getHeight() - getPaddingTop() - getPaddingBottom();
        int drawableWidth = getDrawable().getIntrinsicWidth();
        int drawableHeight = getDrawable().getIntrinsicHeight();

        if (drawableWidth * viewHeight > drawableHeight * viewWidth) {
            scale = (float) viewHeight / (float) drawableHeight;
        } else {
            scale = (float) viewWidth / (float) drawableWidth;
        }

        matrix.setScale(scale, scale);
        setImageMatrix(matrix);
        return super.setFrame(l, t, r, b);http://imageshack.us/a/img560/8381/example3g.png
    }

        // This is just a test
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

          int height = this.getMeasuredHeight();
          int width = this.getMeasuredWidth();

          // Draw a border
          canvas.drawRect(10, 10, width-10, height-10, paint);
    }
}

アダプターgetView

  @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.d("CardView", "getView " + position + " " + convertView);
        ViewHolder holder = null;

        if (convertView == null) {

            convertView = (RelativeLayout) inflater.inflate(resource, null);
            holder = new ViewHolder();
            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.cardImage = (CropTopImageView) convertView
                .findViewById(R.id.cardImage);

        return convertView;
    }

XMLレイアウト

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:orientation="vertical"
    android:paddingTop="30dp"
>

    <com.td.fs.android.customview.CropTopImageView
        android:id="@+id/cardImage"
        android:layout_width="246dp"
        android:layout_height="70dip"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center"
         android:src="@drawable/card_visa_blue"
     />

    <com.td.fs.android.customview.CropTopImageView
        android:id="@+id/pocketImage"
        android:layout_width="275dp"
        android:layout_height="30dp"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center"
        android:layout_marginTop="50dip"
        android:adjustViewBounds="true"
        android:cropToPadding="false"
        android:scaleType="fitXY"
        android:src="@drawable/holder_pocket" />

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/pocketImage"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="92dp"
        android:src="@drawable/home_dashboard_picker" />

</RelativeLayout>

ImageViewは常に表示されています。onDrawは常に表示されています。CropTopImageView src画像は、ランダムに消える/現れるよりも初めて表示されます。

会社の企画なので、画像を見せてもらえるかわかりません。

アップデート ここに画像の説明を入力してください ここに画像の説明を入力してください ここに画像の説明を入力してください

4

1 に答える 1

0

これが答えかどうかはわかりませんが、これをエラー ログとして使用することもできます ;)

使用する塗料は静的であり、覚えておきたいものであれば大したことではありません。私は静電気を除去しようとします。

于 2013-01-25T11:56:44.973 に答える