0

ViewGroup を拡張し、次のようにメソッドをオーバーライドするクラスを作成しました。

 @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    for(int index = 0; index < getChildCount(); index++){
            int width = MeasureSpec.getSize(widthMeasureSpec);
            int height = MeasureSpec.getSize(heightMeasureSpec);
            View child = getChildAt(index);
            child.measure(View.MeasureSpec.makeMeasureSpec(width,
                    View.MeasureSpec.UNSPECIFIED), View.MeasureSpec
                    .makeMeasureSpec(height, View.MeasureSpec.UNSPECIFIED));
    }
}

次のように、このviewGroupにsubViewを追加すると:

String word = words[random.nextInt(words.length)];
            RelativeLayout layout = new RelativeLayout(DraggableGridViewSampleActivity.this);
            TextView text = new TextView(DraggableGridViewSampleActivity.this);
            text.setText(word);
            ImageView view = new ImageView(DraggableGridViewSampleActivity.this);
            view.setImageBitmap(getThumb(word));
            layout.addView(view);

            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            layout.addView(text, params);
            dgv.addView(layout);

効果は次のようなものです: textView を完全に表示することはできません。親ビューは、テキストビューを表示するのに十分なスペースを提供していないようです。

textView を完全に表示するにはどうすればよいですか?

4

1 に答える 1

0

textView を完全に表示できません。親ビューは、テキストビューを表示するのに十分なスペースを提供していないようです。

メソッドで正確に何をしようとしていますonMeasureか?現時点では、スーパー クラスに children( super.onMeasure) の初期測定を処理させてから、再度子を再測定します。今度は を与えてMeasureSpec.UNSPECIFIED、基本的に子供に好きなだけ大きくできることを伝えます。

子を測定するときは常に尊重する必要がありMeasureSpecます(または親がスクロールを許可する必要があります)。親が子を 500 ピクセルにする必要があると言った場合、子にofを指定AT_MOSTして測定するときに、この値を超える可能性はありません。MeasureSpecUNSPECIFIED

于 2013-01-22T09:55:50.437 に答える