如何在NumberPicker中引用EditText?

时间:2017-10-23 08:52:16

标签: android android-edittext numberpicker

我需要在NumberPicker中获取EditText的引用。我知道它会在picker视图本身上出现某种findViewById,但是我无法找到它的id:

final NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.numberpicker);
EditText numberPickerEditText = (EditText) numberPicker.findViewById(WHAT IS THE ID???)

我知道NumberPicker有很多有用的方法用于值等,但是我需要更精细的控制,例如在选择器打开时显示键盘,我不认为我可以在没有引用EditText本身的情况下执行此操作(如果我错了,请随时纠正我!)

3 个答案:

答案 0 :(得分:4)

如果您查看xml使用的NumberPicker文件,您会发现id正在寻找EditText numberpicker_input <merge xmlns:android="http://schemas.android.com/apk/res/android"> <ImageButton android:id="@+id/increment" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/numberpicker_up_btn" android:paddingTop="22dip" android:paddingBottom="22dip" android:contentDescription="@string/number_picker_increment_button" /> <EditText android:id="@+id/numberpicker_input" android:layout_width="fill_parent" android:layout_height="wrap_content" android:textAppearance="@style/TextAppearance.Large.Inverse.NumberPickerInputText" android:gravity="center" android:singleLine="true" android:background="@drawable/numberpicker_input" /> <ImageButton android:id="@+id/decrement" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:drawable/numberpicker_down_btn" android:paddingTop="22dip" android:paddingBottom="22dip" android:contentDescription="@string/number_picker_decrement_button" /> </merge> 1}}:

id

因此,您可以使用相同的NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.numberpicker); EditText numberPickerEditText = (EditText) numberPicker.findViewById(R.id.numberpicker_input)

来实现
id

修改

好的,看起来这个android.internal.id位于numberPicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id", "android")) 内,因为它是系统ID,为了能够访问它,你必须这样做:

log

答案 1 :(得分:0)

您可以在不参考编辑文本的情况下显示软键盘

getWindow()
.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

答案 2 :(得分:0)

你必须创建一个视图并对其进行充气

View yourView = li.inflate(R.layout.your_view, null);

之后,必须将editText初始化为:

EditText yourEditText = (EditText) yourView.findViewById(R.id.text_symbol);

一定会有用......试一试,让我知道它是否适合你 快乐编码兄弟:)