大佬教程收集整理的这篇文章主要介绍了android – 在onMeasue中处理自定义视图的权重,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@Override protected void onMeasure(int widthMeasureSpec,int heightMeasureSpeC) { int widthSize = MeasureSpec.getSize(widthMeasureSpec); int lineWidth = widthSize - getPaddingLeft() - getPaddingRight(); // Change the text size until the largest line of text fits. while (lineWidth < calculateTextWidth()) { for (TextView textView : this.childViews) { float newSize = textView.getTextSize() - 1; textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,newSizE); } } super.onMeasure(widthMeasureSpec,heightMeasureSpec); }
calculateTextWidth()计算最大文本行的宽度,一切都可以使用.这段代码适用于FILL_PARENT和WRAP_CONTENT宽度,但当我尝试给组件一个权重并让它自动设置它的权重时,它会搞砸 – MeasureSpec.getSize(widthMeasureSpeC)返回0,getMinimumSuggestedWidth()也是如此.这给出了一个很好的Activity Not Responding错误,因为lineWidth总是小于calculateTextWidth()会返回的,所以while循环会永远运行.我使用的XML代码基本上是:
<com.my.widgets.ScalingTextViewGroup android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="vertical" android:gravity="center_horizontal" > <TextView android:id="@+id/text_1" android:text="Text 1" android:textSize="20sp" /> <TextView android:id="@+id/text_2" android:text="Text 2" android:textSize="18sp" /> <TextView android:id="@+id/text_3" android:text="Text 3" android:textSize="18sp" /> <TextView android:id="@+id/text_4" android:text="Text 4" android:textSize="18sp" /> </com.my.widgets.ScalingTextViewGroup>
我理解为什么它返回0 – 显然,它被设置为0 – 但我如何让它使用layout_weight?我觉得这应该有一个简单的答案,但我不知道它是什么.
@Override protected void onMeasure(int widthMeasureSpec,int heightMeasureSpeC) { int widthMode = MeasureSpec.getMode(widthMeasureSpec); if (widthMode != MeasureSpec.UNSPECIFIED) { int widthSize = MeasureSpec.getSize(widthMeasureSpec); int lineWidth = widthSize - getPaddingLeft() - getPaddingRight(); // Change the text size until the largest line of text fits. while (lineWidth < calculateTextWidth()) { for (TextView textView : this.childViews) { float newSize = textView.getTextSize() - 1; textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,newSizE); } } } super.onMeasure(widthMeasureSpec,heightMeasureSpec); }
以上是大佬教程为你收集整理的android – 在onMeasue中处理自定义视图的权重全部内容,希望文章能够帮你解决android – 在onMeasue中处理自定义视图的权重所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。