2

我有一个LinearLayout(持有人),它有match_parent宽度和高度。在这个支架中,我插入了一个View(扩展的类View)。我onCreate在 Activity 的方法中执行此操作。

我的问题是,如何让这个孩子在View水平和垂直方向上最大程度地伸展,保持正方形,从父 LinearLayout 中填充尽可能多的区域?

这是我现在用作起点的内容:

    pieContainer = (LinearLayout) findViewById(R.id.pie_container_id);
    pie = new PieView(this);
    pieContainer.addView(pie);

我尝试过在两侧(主要活动和PieView类)覆盖 onMeasure 方法,但无济于事。

4

2 回答 2

1

试试这个自定义 SquareView

public class SquareView extends View {
  public SquareView(Context context) {
    super(context);
  }

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

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

  public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int size = Math.min(getMeasuredWidth(), getMeasuredHeight());
    setMeasuredDimension(size, size);
  }
}
于 2012-10-12T17:24:42.317 回答
0

我想你可以得到整个屏幕的宽度

DisplayMetrics display = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics( display );
int screenW = display.widthPixels;

并设置to的宽度和Viewtofill_parent的高度ViewscreenW

也许是这样的:

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, screenW); // (width, height)
yourView.setLayoutParams(params);

或者我可能完全误解了你的问题。这里很晚了,我累了:) 对不起,如果是这样的话。

让我知道它是否有效:)

于 2012-10-12T17:17:51.367 回答