如何在XML中的微调器中添加提示

我试图在微调框小部件中添加一个提示,因为在EditText没有提示选项,我想将性别显示为提示,单击时它必须只显示男性和女性而不是提示。

如何使用XML完成它

微调器的XML代码。

   

String微调器的数组

  Male Female  

在适配器中,您可以将第一个项目设置为已禁用。 以下是示例代码

 @Override public boolean isEnabled(int position) { if (position == 0) { // Disable the first item from Spinner // First item will be use for hint return false; } else { return true; } } 

并将第一项设置为灰色。

 @Override public View getDropDownView(int position, View convertView, ViewGroup parent) { View view = super.getDropDownView(position, convertView, parent); TextView tv = (TextView) view; if (position == 0) { // Set the hint text color gray tv.setTextColor(Color.GRAY); } else { tv.setTextColor(Color.BLACK); } return view; } 

如果用户选择第一个项目,则不执行任何操作。

 @Override public void onItemSelected(AdapterView< ?> parent, View view, int position, long id) { String selectedItemText = (String) parent.getItemAtPosition(position); // If user change the default selection // First item is disable and it is used for hint if (position > 0) { // Notify the selected item text Toast.makeText(getApplicationContext(), "Selected : " + selectedItemText, Toast.LENGTH_SHORT).show(); } } 

有关详细信息,请参阅以下链接

如何在Android中为Spinner添加提示

有两种方法可以使用微调器:

静态方式

 android:spinnerMode="dialog" 

然后设置:

 android:prompt="@string/hint_resource" 

动态的方式

 spinner.setPrompt("Gender"); 

注意:它将像提示一样工作但实际上并非如此。

愿它有所帮助!

这可以用非常简单的方式完成。 不使用内置值(android.R.layout.simple_list_item_1)设置适配器,而是为TextView和DropDown创建自己的xml布局,并使用它们。 在TextView布局中,定义提示文本和提示颜色。 最后一步,创建并清空项目作为字符串中定义的项目数组中的第一项。

   B.Pharm M.Pharm PharmD  

为Spinner TextView创建XML布局( spnr_qualification.xml

  

为spinner DropDown创建XML布局。( drpdn_qual.xml

  

在主XML布局中定义微调器

  

最后在代码中,在为微调器设置适配器时,使用自定义XML布局。

 ArrayAdapter qual_adapter = ArrayAdapter.createFromResource(this, R.array.professional_qualification_array,R.layout.spnr_qualification); qual_adapter.setDropDownViewResource(R.layout.drpdn_qual); spnQualification.setAdapter(qual_adapter) 

步骤1:

你的arrays看起来像。 最后一项你的提示

例如:private String [] yourArray = new String [] {“Staff”,“Student”,“Your Hint”};

第2步:

创建HintAdpater.java(只需复制和粘贴)

此类不返回最后一项..因此您的提示不会显示。

HintAdapter.java

 package ajax.com.vvcoe.utils; import android.content.Context; import android.widget.ArrayAdapter; import java.util.List; public class HintAdapter extends ArrayAdapter { public HintAdapter(Context context, int resource) { super(context, resource); } public HintAdapter(Context context, int resource, int textViewResourceId) { super(context, resource, textViewResourceId); } public HintAdapter(Context context, int resource, String[] objects) { super(context, resource, objects); } public HintAdapter(Context context, int resource, int textViewResourceId, String[] objects) { super(context, resource, textViewResourceId, objects); } public HintAdapter(Context context, int resource, List objects) { super(context, resource, objects); } public HintAdapter(Context context, int resource, int textViewResourceId, List objects) { super(context, resource, textViewResourceId, objects); } @Override public int getCount() { // don't display last item. It is used as hint. int count = super.getCount(); return count > 0 ? count - 1 : count; } } 

第3步:

像这样设置微调器适配器

  HintAdapter hintAdapter=new HintAdapter(this,android.R.layout.simple_list_item_1,yourArray); yourSpinner.setAdapter(hintAdapter); // show hint yourSpinner.setSelection(hintAdapter.getCount()); 

从这个答案中归功于@Yakiv Mospan – https://stackoverflow.com/a/22774285/3879847

我只修改了一些更改..

让你的提示在你的字符串数组中的最终位置像这样的城市是这里的提示

 array_city = new String[]{"Irbed", "Amman", "City"}; 

然后在你的数组适配器中

 ArrayAdapter adapter_city = new ArrayAdapter(getContext(), android.R.layout.simple_spinner_item, array_city) { @Override public int getCount() { // to show hint "Select Gender" and dont able to select return 2; } }; 

所以适配器只返回前两个项目,最后返回onCreate()方法或者什么,,, make Spinner选择提示

 yourSpinner.setSelection(2); 

诀窍是这一行

 ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.login_input_hint_color)); 

在onItemSelected中使用它。 这是我的代码有更多的上下文

 List list = getLabels(); // First item will be the placeholder ArrayAdapter dataAdapter = new ArrayAdapter(mContext, android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(dataAdapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView< ?> parent, View view, int position, long id) { // First item will be gray if (position == 0) { ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.login_input_hint_color)); } else { ((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.primary_text)); } } @Override public void onNothingSelected(AdapterView< ?> parent) { } }); 

对我有用的是你会为你的微调器设置一个项目列表,包括开头的提示。

  final MaterialSpinner spinner = (MaterialSpinner) findViewById(R.id.spinner); spinner.setItems("Select something in this list", getString(R.string.ABC), getString(R.string.ERD), getString(R.string.KGD), getString(R.string.DFK), getString(R.string.TOE)); 

现在,当用户实际选择列表中的某些内容时,您将使用spinner.setItems方法将列表设置为除提示之外的所有内容:

  spinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener() { @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) { spinner.setItems(getString(R.string.ABC), getString(R.string.ERD), getString(R.string.KGD), getString(R.string.DFK), getString(R.string.TOE)); } 

一旦用户选择列表中的内容,就会删除提示。

如果您的Spinner不支持android:提示符,则应使用android.support.v7.widget.AppCompatSpinner。

  

尝试使用以下属性:

 android:prompt="Gender"