【问题标题】:How to set CustomView size?如何设置自定义视图大小?
【发布时间】:2012-07-19 05:40:50
【问题描述】:

我正在创建一个三角形(自定义视图),然后将其添加到父视图(RelativeLayout)。我在这里面临的问题是查看父级的全屏,我如何将自定义视图的大小设置为该边界。三角形从视图延伸,它有触摸监听器。我动态地改变三角形的大小。

我已将 onMeasure() 添加到该视图,但它需要一些固定的宽度和高度..

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    Log.d(TAG, "Width spec: " + MeasureSpec.toString(widthMeasureSpec));
    Log.d(TAG, "Height spec: " + MeasureSpec.toString(heightMeasureSpec));

    int widthMode = MeasureSpec.getMode(widthMeasureSpec);
    int widthSize = MeasureSpec.getSize(widthMeasureSpec);

    int heightMode = MeasureSpec.getMode(heightMeasureSpec);
    int heightSize = MeasureSpec.getSize(heightMeasureSpec);

    int chosenWidth = chooseDimension(widthMode, widthSize);
    int chosenHeight = chooseDimension(heightMode, heightSize);

    int chosenDimension = Math.min(chosenWidth, chosenHeight);

    setMeasuredDimension(chosenDimension, chosenDimension);
}

当用户更改视图的大小时,我想根据视图的大小设置自定义视图的宽度和高度。看图。

【问题讨论】:

  • 我用图片编辑了我的问题。
  • 您希望自定义视图的宽度和高度是多少?即使您在其中绘制三角形,视图也将始终为矩形。
  • 好的,如何为我的视图创建一个矩形取决于三角形的高度和宽度。我想从那个视图中剪掉那个三角形。
  • 您可以有一个只在三角形内部绘制而不在其外部绘制任何东西的三角形。即不要为自定义视图设置背景颜色。
  • 这些三角点一开始是默认的,点数应该根据用户需求动态变化,他可以随心所欲地改变......

标签: android android-custom-view


【解决方案1】:

点在哪里并不重要。您可以绘制任何方向的三角形。但自定义视图将始终是一个矩形。如果您不在三角形之外绘制任何内容,则视图将显示为三角形。

【讨论】:

  • 我能够根据点绘制三角形,但我想设置视图的宽度和高度。应该达到三角形边界......
  • 从这三个点找到最大 x 位置。找到点的最大 y 位置。然后使用那些 max x 和 maxy 来设置自定义视图的测量宽度和高度。
  • 如果我这样创建,即使我触摸三角形的外侧,即矩形的一侧,触摸事件也会触发。在那个时候我会不匹配..
  • 为此,您需要确定触摸是发生在三角形内部还是外部,并在 onTouchEvent 方法中忽略这些触摸。
  • 我已经这样做了。如果我有更多的观点彼此更接近。这次很难找到我触摸了哪个视图..
猜你喜欢
  • 2016-05-29
  • 2020-04-25
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2018-11-07
  • 1970-01-01
  • 2012-09-05
相关资源
最近更新 更多