Android自定义Spinner
来源:互联网 发布:js 跳转url 新页面 编辑:程序博客网 时间:2024/06/10 04:14
Android系统自带的spinner不是太好看,有时候需要我们自己去改变它的样子,需要自定义spinner:
首先主界面的样子main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ffffff" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:text="地点名字 :" android:textColor="#000000" android:textSize="20dp" /> <com.spinner.test.CustomerSpinner android:id="@+id/spinner" android:layout_width="150dp" android:layout_height="50dp" android:layout_marginTop="15dp" android:background="@drawable/bg_spinner" /></LinearLayout>
spinner.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@android:color/background_light" android:orientation="vertical" android:padding="0.0dip" > <LinearLayout android:id="@+id/title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#defafd" android:padding="10.0dip" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10.0dip" /> <TextView android:id="@+id/place" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/icon" android:text="请选择地点:" android:textColor="#0182af" android:textSize="20.0dip" /> </LinearLayout> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1" android:cacheColorHint="@null" android:divider="@android:drawable/divider_horizontal_bright" android:scrollbars="none" /> </LinearLayout>
spinner的item的样子:
item.xml,这里只写了汉字的,可以根据自己需要添加其他的控件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_item" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_marginLeft="25dp" android:gravity="center_vertical" android:textColor="#000000" android:textSize="16dp" /></LinearLayout>
接下来就是各自的class:
首先要重写spinner,继承spinner
import java.util.ArrayList;import android.app.Dialog;import android.content.Context;import android.util.AttributeSet;import android.view.LayoutInflater;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.Spinner;public class MySpinner extends Spinner implements OnItemClickListener { public static Dialog dialog = null; private ArrayList<String> list;//ArrayList<String> list存储所要显示的数据 public static String text; public CustomerSpinner(Context context, AttributeSet attrs) { super(context, attrs); } //如果视图定义了OnClickListener监听器,调用此方法来执行 @Override public boolean performClick() { Context context = getContext(); final LayoutInflater inflater = LayoutInflater.from(getContext()); final View view = inflater.inflate(R.layout.spinner, null); final ListView listview = (ListView) view .findViewById(R.id.list); ListviewAdapter adapters = new ListviewAdapter(context, getList()); listview.setAdapter(adapters); listview.setOnItemClickListener(this); dialog = new Dialog(context, R.style.dialog);//创建Dialog并设置样式主题 LayoutParams params = new LayoutParams(600, LayoutParams.FILL_PARENT); dialog.setCanceledOnTouchOutside(true);// 设置点击Dialog外部任意区域关闭Dialog dialog.show(); dialog.addContentView(view, params); return true; } @Override public void onItemClick(AdapterView<?> view, View itemView, int position, long id) { setSelection(position); setText(list.get(position)); if (dialog != null) { dialog.dismiss(); dialog = null; } } public ArrayList<String> getList() { return list; } public void setList(ArrayList<String> list) { this.list = list; } public String getText() { return text; } public void setText(String text) { this.text = text; }}
接下来是adapter
import java.util.ArrayList;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;public class ListviewAdapter extends BaseAdapter { private Context context; private ArrayList<String> list; public ListviewAdapter(Context context,ArrayList<String> list){ this.context = context; this.list = list; } @Override public int getCount() { return list.size()>0?list.size():0; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = LayoutInflater.from(context).inflate(R.layout.item, null); TextView textView = (TextView)convertView.findViewById(R.id.tv_item); textView.setText(list.get(position)); return convertView; }}
最后是main
import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.widget.ArrayAdapter;public class SpinnerTestMainActivity extends Activity { public static ArrayList<String> list = new ArrayList<String>(); private ArrayAdapter<String> adapter; private MySpinner spinner; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); list.add("北京"); list.add("上海"); list.add("天津"); list.add("广州"); list.add("深圳"); list.add("石家庄"); list.add("太原"); list.add("西安"); list.add("长沙"); spinner = (MySpinner)findViewById(R.id.spinner); spinner.setList(list); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list); spinner.setAdapter(adapter); }}
OK这样就可以了
0 0
- 自定义Android的Spinner
- 自定义Android的Spinner
- 自定义Android的Spinner
- Android 实现自定义Spinner
- 自定义Android的Spinner
- 自定义Android的Spinner
- 自定义Android的Spinner
- 自定义Android的Spinner
- android自定义Spinner
- Android 实现自定义Spinner
- Android自定义Spinner
- android之自定义Spinner
- Android 实现自定义Spinner
- Android 实现自定义Spinner
- Android 自定义Spinner
- Android 自定义 spinner样式
- Android自定义Spinner
- Android自定义Spinner
- Java 字符串分割
- linux,/etc/passwd,/etc/shadow详解
- Linux下重启php的办法【php版本5.3.16】
- Android 三种sendBroadCast的方式对比
- Android Studio Error:(1, 1) 错误: 非法字符: \65279
- Android自定义Spinner
- 乱记-5
- Python:使用ctypes库调用外部DLL(附带ctypes c 类型转换图)
- android 百度地图 驾车路径的距离获取
- 递归与分治策略
- Service跨进程通讯解析天气
- 无法启动Android模拟器的解决办法
- JSONTokener
- artDialog包---html和js完成弹出窗口和跳转