gpt4 book ai didi

android - MeasureSpec 返回 0 值 - onMeasure()

转载 作者:搜寻专家 更新时间:2023-11-01 07:50:52 26 4
gpt4 key购买 nike

我已经搜索过有关此问题的答案,但没有找到解决方案。所以我在这里请求帮助。我正在创建自定义 View 。我已经覆盖了 onMeasure。代码如下。

   @Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int widthSize,heightSize;

int measureWidthSpec = MeasureSpec.getMode(widthMeasureSpec);

int measureHeightSpec = MeasureSpec.getMode(heightMeasureSpec);

widthSize = getCircleWidth(measureWidthSpec, MeasureSpec.getSize(widthMeasureSpec));
heightSize = getCircleHeight(measureHeightSpec,MeasureSpec.getSize(heightMeasureSpec));

int circleSize = Math.min(widthSize,heightSize);

setMeasuredDimension(circleSize, circleSize);

Log.d(TAG, "View Measured and ViewDimension : " + heightSize + " " + MeasureSpec.getSize(widthMeasureSpec));
}

此处使用 MeasureSpec.getSize(widthMeasureSpec) 请求尺寸时,返回 0。但是对于高度,我得到的值为 67。getCircleWidth() 和 getCircleHeight 是用于根据 specMode 固定值的方法。下面是我声明 View 的布局 xml 文件部分。

 <com.example.raaja.circleview.CircleView
android:id="@+id/CircleView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@+id/textView"
android:layout_toRightOf="@+id/textView"
circle:circleColor="#5dade2"
circle:innerCircleColor="#2874a6"
circle:numberTextColor="#b3b6b7"
/>

谁能帮我找出返回值 0 的原因。也不会调用 onDraw,因为我在 setMeasuredDimension() 中修复了一个最小值。

最佳答案

我已经从 BladeCoder 的回复中找到了这个解决方案的答案。问题实际上出在 Layout.xml 上。我已经用另一个按钮并排定义了 View 。 Button 占据了所有的宽度空间。所以这就是问题所在。如果您的 View 未在下面绘制,则为 2 点解决方案。

  1. 检查 MeasureSpec.getsize()。如果它返回 0,则布局没有空间将 View 放在那里(宽度或高度),修复您的 layout.xml。如果不是,则继续检查您为修复 setMeasuredDimension() 上的尺寸所做的计算。这两个问题将是第二点的原因。

  2. 如果您在 setMeasuredDimension() 上传递 0,则不会绘制 onDraw()。您可以传递 1000 或更大宽度但如果传递 0 高度(如 setMeasureDimension(1000,0))的原因, View 将不可见,因为它的高度为零。

我希望这个答案能帮助您找到解决上述问题的方法。

关于android - MeasureSpec 返回 0 值 - onMeasure(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35339377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com