如何在 NumberPicker 中引用 EditText?
How to reference the EditText inside a NumberPicker?
我需要在 NumberPicker 中获取对 EditText 的引用。我知道这将是选择器视图本身的某种 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"))
您可以在不参考编辑文本的情况下显示软键盘
getWindow()
.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
您必须创建一个视图并将其扩充
View yourView = li.inflate(R.layout.your_view, null);
之后必须将您的 editText 初始化为:
EditText yourEditText = (EditText) yourView.findViewById(R.id.text_symbol);
它肯定会起作用...试一试,如果它对你有用,请告诉我
快乐编码兄弟 :)
我需要在 NumberPicker 中获取对 EditText 的引用。我知道这将是选择器视图本身的某种 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"))
您可以在不参考编辑文本的情况下显示软键盘
getWindow()
.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
您必须创建一个视图并将其扩充
View yourView = li.inflate(R.layout.your_view, null);
之后必须将您的 editText 初始化为:
EditText yourEditText = (EditText) yourView.findViewById(R.id.text_symbol);
它肯定会起作用...试一试,如果它对你有用,请告诉我 快乐编码兄弟 :)