Mag*_*eek 3 java android numberpicker
在activity_main.xml:
<NumberPicker
android:id="@+id/numberPicker1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp" />
Run Code Online (Sandbox Code Playgroud)
在MainActivity.java里面oncreate:
NumberPicker numberPicker1 = (NumberPicker) findViewById(R.id.numberPicker1);
numberPicker1.setMinValue(1);
numberPicker1.setMaxValue(20);
Run Code Online (Sandbox Code Playgroud)
当我用键盘编辑值时,我以编程方式获得的值不会改变,但如果我按下+然后-它可以工作.
如何在不按+和的情况下使其工作-?
编辑:
我用MelihAltıntaş的代码创建了一个新项目,它显示了一个全新的数字选择器!(用手指滑动但不能输入文字的那个).然后我和我的真实项目相比,我看到了android:theme="@android:style/Theme.NoTitleBar".我在新项目中添加了它,然后numberpicker成为我习惯的那个.
1Ha*_*aKr 17
如果有人想要一个简单的解决方法,只需在保存值之前添加以下代码.
numberPicker.clearFocus();
Run Code Online (Sandbox Code Playgroud)
这NumberPicker不是为那次互动而设计的.当您使用键盘更改值时,您将直接更改窗口小部件,NumberPicker并且窗口小部件本身不会看到此更改,因此这就是您最终存储最后一个值的原因.为了解决这个问题,你需要一些hacky代码,这不是真正推荐的,因为你需要访问底层代码EditText(假设手机制造商并没有改变这一点):
private EditText findInput(ViewGroup np) {
int count = np.getChildCount();
for (int i = 0; i < count; i++) {
final View child = np.getChildAt(i);
if (child instanceof ViewGroup) {
findInput((ViewGroup) child);
} else if (child instanceof EditText) {
return (EditText) child;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
然后你将使用这个代码TextWatcher在找到的EditText时候设置一个人工修改的时间(让我们NumberPicker知道这个改变):
EditText input = findInput(np);
TextWatcher tw = new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().length() != 0) {
Integer value = Integer.parseInt(s.toString());
if (value >= np.getMinValue()) {
np.setValue(value);
}
}
}
};
input.addTextChangedListener(tw);
Run Code Online (Sandbox Code Playgroud)
另一种选择是制作您自己的NumberPicker小部件实现并插入您定位的功能.
| 归档时间: |
|
| 查看次数: |
4195 次 |
| 最近记录: |