`

自定义的Spinner

 
阅读更多



 

 

public class Spinner2 extends Activity {
	final static int WRAP_CONTENT = -2;// 表示WRAP_CONTENT的常量
	// 所有资源图片(足球、篮球、排球)id的数组
	int[] imageId = { R.drawable.football, R.drawable.basketball,
			R.drawable.volleyball };
	// 所有资源字符串(足球、篮球、排球)id的数组
	int[] strID = { R.string.zq, R.string.lq, R.string.pq };

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.spinner2);

		setTitle("自定义Spinner");

		Spinner sp = (Spinner) this.findViewById(R.id.Spinner01);// 初始化Spinner

		/**
		 * 重写适配器
		 */
		BaseAdapter baseAdapter = new BaseAdapter() {// 为Spinner准备内容适配器
			@Override
			public int getCount() {// 总共三个选项
				return 3;
			}

			@Override
			public Object getItem(int arg0) {
				return null;
			}

			@Override
			public long getItemId(int arg0) {
				return 0;
			}

			@Override
			public View getView(int arg0, View arg1, ViewGroup arg2) {
				/*
				 * 动态生成每个下拉项对应的View,每个下拉项View由LinearLayout
				 * 中包含一个ImageView及一个TextView构成
				 */
				LinearLayout linearLayout = new LinearLayout(Spinner2.this);

				linearLayout.setOrientation(LinearLayout.HORIZONTAL); // 设置朝向

				// 初始化ImageView
				ImageView imageView = new ImageView(Spinner2.this);
				imageView.setImageDrawable(getResources().getDrawable(
						imageId[arg0]));// 设置图片

				// 初始化TextView
				TextView tv = new TextView(Spinner2.this);
				tv.setText(" " + getResources().getText(strID[arg0]));// 设置内容
				tv.setTextSize(24);// 设置字体大小
				tv.setTextColor(R.color.white);// 设置字体颜色

				linearLayout.addView(imageView);// 添加到LinearLayout中
				linearLayout.addView(tv);// 添加到LinearLayout中
				return linearLayout;
			}
		};

		sp.setAdapter(baseAdapter);// 为Spinner设置内容适配器
		sp.setOnItemSelectedListener(// 设置选项选中的监听器
				new OnItemSelectedListener() {
					@Override
					public void onItemSelected(AdapterView<?> arg0, View arg1,
							int arg2, long arg3) {// 重写选项被选中事件的处理方法
						TextView tv = (TextView) findViewById(R.id.TextView01);// 获取主界面TextView

						LinearLayout linearLayout = (LinearLayout) arg1;// 获取当前选中选项对应的LinearLayout
						TextView tvn = (TextView) linearLayout.getChildAt(1);// 获取其中的TextView

						StringBuilder sb = new StringBuilder();// 用StringBuilder动态生成信息
						sb.append(getResources().getText(R.string.ys));
						sb.append(":");
						sb.append(tvn.getText());

						tv.setText(sb.toString());// 信息设置进主界面TextView
					}

					@Override
					public void onNothingSelected(AdapterView<?> arg0) {
					}
				});
	}
}

 

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/LinearLayout01"
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android">
	<TextView android:text="@string/ys" android:id="@+id/TextView01"
		android:layout_width="fill_parent" android:layout_height="wrap_content"
		android:textSize="28dip" />
	<Spinner android:id="@+id/Spinner01" android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
</LinearLayout>

 

 

  • 大小: 25.5 KB
分享到:
评论

相关推荐

    Android自定义Spinner样式

    以上就是关于Android自定义Spinner样式的详细说明。通过这些方法,你可以打造出与应用主题相符、用户体验良好的Spinner组件。记住,良好的UI设计能够提升用户对应用的满意度,因此花时间在自定义控件样式上是值得的...

    自定义spinner

    自定义Spinner可以帮助我们根据应用程序的需求调整其外观和行为,以提供更好的用户体验。在这个"自定义spinner的小列子"中,虽然存在一些缺陷,但我们可以从中学到一些关键的知识点。 首先,我们要了解Spinner的...

    简单的自定义Spinner

    ### 知识点详解:简单的自定义Spinner #### 一、引言 在Android开发过程中,经常需要使用到`Spinner`这一控件来提供用户选择的功能。然而,默认的`Spinner`样式可能无法满足设计师或者产品经理对UI的要求。因此,...

    自定义Spinner

    "自定义Spinner"是指开发者根据实际需求,对系统默认的Spinner进行功能扩展或者样式调整,以达到更好的用户体验或者特定的设计效果。本篇文章将深入探讨如何在Android中自定义Spinner,并通过实例项目`...

    Android 自定义spinner控件下拉框实现

    首先,我们创建一个新的布局文件,继承自LinearLayout,作为自定义Spinner的基础。这样做可以让我们更好地控制布局的结构和样式,同时还能支持自定义的点击事件和动画效果。在布局文件中,我们可以添加一个TextView...

    Android城市级联下拉框(自定义Spinner)

    这种效果通常通过自定义Spinner来完成。Spinner是Android中的一个下拉选择控件,它提供了用户友好的交互方式,允许用户在一组预设选项中进行选择。 **1. Spinner的基本使用** Spinner的使用主要包括两步:创建...

    自定义Spinner实现初始项不参与列表显示(Spinner添加“请选择”)

    本文将详细介绍如何自定义Spinner以实现这种功能。 ### 1. 创建“请选择”项 首先,我们需要在布局文件中为Spinner定义一个特殊的TextView,用于显示“请选择”这一初始选项。这可以通过在Spinner的布局中添加一个...

    自定义Spinner(PopupWindow实现的弹出下拉框)

    然而,系统默认的Spinner样式可能不能满足所有设计需求,因此开发者常常需要自定义Spinner来实现更丰富的交互效果。本节我们将深入探讨如何使用PopupWindow实现一个自定义的Spinner,以获得类似网站下拉窗口的效果。...

    android自定义Spinner

    然而,标题"android自定义Spinner"表明我们将探讨如何超越默认的显示方式,即避免使用Dialog形式,而是实现一个下拉式的Spinner显示。 1. **Spinner基础知识**: - Spinner是Android SDK中的一个视图组件,属于...

    自定义spinner样式

    自定义Spinner的关键在于创建一个自定义的布局文件,该布局文件将作为每个Spinner条目的模板。通常,这会包含一个TextView,但也可以包括其他视图元素,如ImageView或CheckBox。例如,在`res/layout/custom_spinner...

    Android自定义Spinner

    然而,当我们需要自定义Spinner的下拉样式时,原生的Spinner就显得力不从心了。这时,我们可以利用PopupWindow来替代Spinner的下拉菜单。PopupWindow是一个可以浮现在屏幕任意位置的窗口,它的灵活性非常高,可以...

    Android自定义spinner下拉框实现的实现

    在`SpinnerTest`这个项目中,可能包含了实现上述自定义Spinner的示例代码,包括布局文件和对应的Adapter类。通过分析和运行这个示例,开发者可以更好地理解自定义Spinner下拉框的实现过程。 总的来说,自定义...

    自定义Spinner--利用TextView以及Dialog组合

    ### 自定义Spinner的基本原理 1. **TextView**:TextView是Android中的基本组件,用于显示单行或多行文本。在这个自定义Spinner中,TextView通常作为界面默认显示的部分,展示当前选中的选项。 2. **Dialog**:...

    android自定义spinner下拉框实现(封装更通用)

    博文参考:http://blog.csdn.net/geniuseoe2012/article/details/8723702 android仿web风格的spinner下拉框实现demo,实现更通用

    Android 自定义Spinner的Demo

    在Android Studio中自定义Spinner,我们可以实现更丰富的视觉效果和交互体验。下面将详细介绍如何在Android Studio中实现一个自定义的Spinner。 首先,我们需要了解Spinner的基本用法。在布局XML文件中添加Spinner...

    android 自定义spinner popupWindow

    自定义Spinner主要涉及以下几个方面: 1. **自定义样式**:可以通过修改Spinner的默认主题或者创建自定义主题来改变其外观,如背景色、文字颜色等。 2. **自定义弹出列表**:默认的Spinner弹出列表是AlertDialog,...

Global site tag (gtag.js) - Google Analytics