是否可以设置一个提示 Spinner 在 Android

有什么机会为此提示 spinner 看起来像一个提示,它被提供用于编辑文本字段。 我知道你可以使用为您提供标题字符串的邀请,但仍然离开初始字段 spinner 在你点击之前空 spinner. 目前,我有一个粗鲁的方法来将虚构的字段安装为数组的第一部分 spinner, 这是一个问题,然后在最后检查以确保 spinner 不等于问题界限。 有没有清洁 / 做到最好的方法吗?

谢!
已邀请:

裸奔

赞同来自:

这是一个可能比Ravi Vonyas更容易的解决方案 /谢谢你给我灵感!/:


ArrayAdapter<string> adapter = new ArrayAdapter<string>/getActivity//, android.R.layout.simple_spinner_dropdown_item/ {

@Override
public View getView/int position, View convertView, ViewGroup parent/ {

View v = super.getView/position, convertView, parent/;
if /position == getCount/// {
//TextView/v.findViewById/android.R.id.text1//.setText/""/;
//TextView/v.findViewById/android.R.id.text1//.setHint/getItem/getCount////; //"Hint to be displayed"
}

return v;
}

@Override
public int getCount// {
return super.getCount//-1; // you dont display last item. It is used as hint.
}

};

adapter.setDropDownViewResource/android.R.layout.simple_spinner_dropdown_item/;
adapter.add/"Item 1"/;
adapter.add/"Item 2"/;
adapter.add/"Hint to be displayed"/;

spinner.setAdapter/adapter/;
spinner.setSelection/adapter.getCount///; //display hint


</string></string>

龙天

赞同来自:

您可以自定义自己的适配器。 spinner 并覆盖方法 getView, 显示提示而不是元素 . 我创建了一个示例性项目 github , 在这里检查一下

小明明

赞同来自:

比设置自己的适配器更简单的方式。 spinner, - 它只是使用按钮并将其称为对象 spinner 通过


android:background="@android:drawable/btn_dropdown"


然后设置一个事件 onClick 按钮打开对话框 single-item-select. 然后,您可以使用按钮的文本来做任何您想要的。

这是我最喜欢应对这一点的方法。 我希望这将有助于某人。

EDIT:

我最近再次播放了 /有人让我在前段时头前发表一个例子/. 如果您使用该主题,此策略将看起来有点不同 Holo. 但是,如果您使用其他主题,例如 Theme.Black, 它看起来很讨厌。

为了证明这一点,我制作了一个像普通人一样的简单应用程序 Spinner, 所以和我的用户微调按钮。 我扔了它
https://github.com/sberg413/SpinnerButton
GitHub , 但这项活动是什么样的:


package com.stevebergamini.spinnerbutton;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Spinner;

public class MainActivity extends Activity {

Spinner spinner1;
Button button1;
AlertDialog ad;
String[] countries;

int selected = -1;

@Override
protected void onCreate/Bundle savedInstanceState/ {
super.onCreate/savedInstanceState/;
setContentView/R.layout.activity_main/;

spinner1 = /Spinner/ findViewById/R.id.spinner1/;
button1 = /Button/ findViewById/R.id.button1/;

countries = getResources//.getStringArray/R.array.country_names/;

// You can also use an adapter for the allert dialog if you'd like
// ArrayAdapter<string> adapter = new ArrayAdapter<string>/this, android.R.layout.simple_spinner_dropdown_item, countries/;

ad = new AlertDialog.Builder/MainActivity.this/.setSingleChoiceItems/countries, selected,
new DialogInterface.OnClickListener// {

@Override
public void onClick/DialogInterface dialog, int which/ {
button1.setText/countries[which]/;
selected = which;
ad.dismiss//;

}}/.setTitle/R.string.select_country/.create//;


button1.setOnClickListener/ new OnClickListener//{

@Override
public void onClick/View v/ {
ad.getListView//.setSelection/selected/;
ad.show//;
}}/;

}
}


</string></string>

要回复问题请先登录注册