如何在 NumberPicker 中引用 EditText?

Vin*_*man 4 android android-edittext numberpicker

我需要在 NumberPicker 中获取对 EditText 的引用。我知道它会是选择器视图本身的某种 findViewById,但我一直无法为它找到 android 的 id:

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

我知道 NumberPicker 具有大多数有用的值等方法,但我需要一些更精细的控制,例如在选择器打开时显示键盘,我认为如果没有对 EditText 本身的引用,我无法做到这一点(随意如果我错了,请纠正我!)

Ash*_*jan 6

如果你想看看xml文件正在使用NumberPicker,你会发现idEditText你要找的是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>
Run Code Online (Sandbox Code Playgroud)

因此,您可以使用相同的方法来做到这一点id

NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.numberpicker);
EditText numberPickerEditText = (EditText) numberPicker.findViewById(R.id.numberpicker_input)
Run Code Online (Sandbox Code Playgroud)

编辑

好的,看起来这id是 inside android.internal.id,因为它是一个系统 ID,为了能够访问它,你必须这样做:

numberPicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id", "android"))
Run Code Online (Sandbox Code Playgroud)