上面的题目看上去如此复杂,emmm,下面介绍心机Boy自定义可编辑下拉框的方法。
就是偷懒不去自己写一个Spinner,想出来的。
首先在现在的安卓版本中,不支持Spinner可以编辑,但是经常都要用到,又懒得写多的代码。
这里就是将Spinner的功能都用起来,再加上editview的功能,将Spinner隐藏 用 editview+imageview来代替,将需要Spinner的功能的就都绑到我们的两个控件上,这样就可以既可以编辑又可以下拉选择
下面是主要代码说明 但是需要注意一些小的问题 比如说我们新输入的文字要加入Spinner时就要多写几行代码
第一步 剩下的面包不要扔,裹上鸡蛋液。。。
第二步 在layout中写好我们的布局文件
<LinearLayout
android:layout_width="230dp"
android:layout_height="wrap_content">
<!--这里将Spinner灭口,隐藏 我是设置高度和宽度-->
<Spinner
android:id="@+id/spinner"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="invisible"
></Spinner>
<EditText
android:id="@+id/spinner_edit"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:textSize="15sp"
android:height="33dp" />
<ImageView
android:id="@+id/spinner_but"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:scaleType="fitXY"
android:src="@drawable/pull_down"/>
</LinearLayout>
具体效果图如下: "IP:"后的就是EditView和ImageView Spinner被隐藏了
第三步 写一个原生的Spinner,将适配器什么的都绑定好,如下
public class LoginPage extends Activity {
EditText spinnerEdit;//伪装者输入框========
ImageView spinnerBut;//伪装者图片按钮========
Spinner spinner;
SimpleAdapter simpleAdapter;
List<String> IPListString=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//第一步****************
//初始化
spinner = findViewById(R.id.spinner);
spinnerEdit=findViewById(R.id.spinner_edit);
spinnerBut=findViewById(R.id.spinner_but);
IPListString//获取数据源到List中
}
@Override
protected void onStart() {
super.onStart();
//第二步 看下面的方法
SetAdapter();//设置适配器
//第三步****************
//这里将我们自己的ImageButton或者ImageView的点击事件与Spinner的绑定
spinnerBut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
spinner.performClick();
}
});
}
//需要先设置IPListString
private void SetAdapter(){
/**
*这里我们可以将自己的数据构造成适配器需要的样子
*/
simpleAdapter = new SimpleAdapter(this, IPList, R.layout.spinner_up_item, new String[]{"IP"}, new int[]{R.id.ipTextV});
simpleAdapter.setDropDownViewResource(R.layout.spinner_down__item);
spinner.setAdapter(simpleAdapter);
//第二步中最重要的部分*****************
//将我们每次点击的内容放到TextView中
spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
spinnerEdit.setText(IPListString.get(position););
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}