Necesito obtener la referencia al EditText dentro de un NumberPicker. Sé que será una especie de findViewById en la vista del selector, pero no he podido encontrar la identificación de Android para ello:

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

Sé que NumberPicker tiene la mayoría de los métodos útiles para el valor, etc., pero necesito un control más fino, como mostrar el teclado cuando se abre el selector y no creo que pueda hacerlo sin una referencia al EditText en sí mismo (siéntase libre para corregirme si me equivoco en esto!)

4
Vin Norman 23 oct. 2017 a las 11:52

3 respuestas

La mejor respuesta

Si observa el archivo xml que está utilizando el NumberPicker, encontrará que el id del EditText que está buscando es 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>

Entonces, puedes hacerlo usando el mismo id:

NumberPicker numberPicker = (NumberPicker) view.findViewById(R.id.numberpicker);
EditText numberPickerEditText = (EditText) numberPicker.findViewById(R.id.numberpicker_input)

EDITAR

Ok, parece que esto id está dentro de android.internal.id, ya que es una identificación del sistema, para poder acceder a él tendrás que hacer esto:

numberPicker.findViewById(Resources.getSystem().getIdentifier("numberpicker_input", "id", "android"))
5
Ashish Ranjan 23 oct. 2017 a las 09:22

Tienes que crear una vista e inflarla

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

Después de eso, debe inicializar su editText como:

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

Seguramente funcionará ... Pruébalo y avísame si te funciona. Feliz codificación hermano :)

0
Muhammad Saad Rafique 23 oct. 2017 a las 09:31

Puede mostrar el teclado virtual sin referencia al texto de edición

getWindow()
.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
0
wscourge 23 oct. 2017 a las 09:13