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

当我将 subView 添加到此 viewGroup 时,如下所示:

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) 的初始测量,然后你再次重新测量孩子,这次给他们 a MeasureSpec.UNSPECIFIED,基本上告诉孩子他们可以像他们想要的一样大。

MeasureSpec当您测量孩子(或父母应该允许滚动)时,您应该始终尊重。如果父母说孩子应该是AT_MOST500 px,那么在测量孩子时不要潜在地跨过这个值,给他们一个MeasureSpec.UNSPECIFIED

于 2013-01-22T09:55:50.437 回答