在Android中Spinner就是下拉菜单和AutoCompleteTextView自动显示的样式,它相当于HTML中的<select>标签。
Android中提供的Spinner Widget下拉菜单和AutoCompleteTextView自动显示已经非常好用了,样式也适用,
不过我们还是可以通过定义xml的方式来改变下拉菜单的样式。
在layout目录下新建一个xml文件,名字随便(我这里叫activity_main.xml)。在这个文件里面可以定义下拉菜单的样式
我们这里采用TextView来实现。
activity_main.xml:
View
Code
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" 5 android:background="#000000" 6 tools:context=".MainActivity" > 7 8 <AutoCompleteTextView 9 android:id="@+id/actv" 10 android:layout_width="fill_parent" 11 android:layout_height="wrap_content" /> 12 13 </RelativeLayout>
自定义的样式就是在layout下建立一个xml文件,名字这里我随便起。代码如下:
down.xml:
View
Code
1 <TextView xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/contentTextView" 4 android:layout_width="fill_parent" 5 android:layout_height="wrap_content" 6 android:background="#F4FDFF" 7 android:textColor="#000000" > 8 9 </TextView>
在activity中的调用方法如下:
View
Code
1 package com.example.autocompletetextvewtest; 2 3 import java.util.List; 4 5 import android.app.Activity; 6 import android.os.Bundle; 7 import android.view.Menu; 8 import android.widget.ArrayAdapter; 9 import android.widget.AutoCompleteTextView; 10 11 public class MainActivity1 extends Activity { 12 private AutoCompleteTextView actv; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 String[] strings = new String[] { "北京", "北京西站", "北京南站", "上海", "上海浦东机场" }; 19 actv = (AutoCompleteTextView) findViewById(R.id.actv); 20 // 第二个参数是样式的Layout布局id,第三个参数是:显示具体样式的TextView的id 21 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 22 R.layout.down, R.id.contentTextView, strings); 23 actv.setThreshold(1); 24 actv.setAdapter(adapter); 25 } 26 27 @Override 28 public boolean onCreateOptionsMenu(Menu menu) { 29 getMenuInflater().inflate(R.menu.activity_main, menu); 30 return true; 31 } 32 33 }