我正在学习用android studio做应用程序。我正在构建一个数字编程器。我想调整我的号码大小。
为了调整我的数字选择器的大小,我在开发人员文档中找到了一个名为onMeasure的受保护方法。 https://developer.android.com/reference/android/widget/NumberPicker
NumberPicker p_myNumberPicker = new NumberPicker(this);
p_myNumberPicker.setMaxValue(150);
p_myNumberPicker.setMinValue(0);
p_myNumberPicker.onMeasure(100,100);
NumberPicker.OnValueChangeListener myValChangedListener = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
p_number.setText(""+newVal);
}
我的问题是我有一条错误消息“onMeasure(int,int)在android.widget.NumberPicker中有受保护的访问权限”。我该如何解决?
请阅读下面的method文档,你会发现:
合同:重写此方法时,必须调用setMeasuredDimension(int,int)来存储此视图的测量宽度和高度。如果不这样做将触发由measure(int,int)抛出的IllegalStateException。调用超类'onMeasure(int,int)是一种有效的用法。
measure的基类实现默认为背景大小,除非MeasureSpec允许更大的大小。子类应覆盖onMeasure(int,int)以提供更好的内容测量。
只需删除此行:
p_myNumberPicker.onMeasure(100,100);
因为你违反了方法的访问范围,这并不意味着被称为相似的。如果你真的想要调用它,你必须使用CustomNumberPicker extends NumberPicker
,并在它的范围内调用这个protected
方法。只有这样,访问范围才能与定义相匹配。
这不是你如何调整大小。实际上,错误地调用视图的onMeasure会严重破坏事物。由于您将其设置为固定大小,因此只需在定义窗口小部件的xml中为其指定固定的宽度和高度。或者,如果在代码中定义它,则在其布局参数中使用固定的宽度和高度。