我需要在 NumberPicker 中获取对 EditText 的引用。我知道这将是选择器 View 本身的某种 findViewById,但我一直无法为其找到 android 的 ID:
final NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.numberpicker);
EditText numberPickerEditText = (EditText) numberPicker.findViewById(WHAT IS THE ID???)
我知道 NumberPicker 有大多数有用的值等方法,但我需要一些更好的控制,例如在选择器打开时显示键盘,我认为如果不引用 EditText 本身我无法做到这一点(如果我在这方面有误,请随时纠正我!)
如果您查看 NumberPicker
使用的 xml
文件,您会发现 EditText 的 id
你要找的是 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>
因此,您可以使用相同的 id
来完成此操作:
NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.numberpicker);
EditText numberPickerEditText = (EditText) numberPicker.findViewById(R.id.numberpicker_input)
编辑
好吧,看起来这个 id
是在 android.internal.id
里面的,因为它是一个系统 id,为了能够访问它你必须做这个:
numberPicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id", "android"))
我是一名优秀的程序员,十分优秀!