
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样式的详细说明。通过这些方法,你可以打造出与应用主题相符、用户体验良好的Spinner组件。记住,良好的UI设计能够提升用户对应用的满意度,因此花时间在自定义控件样式上是值得的...
自定义Spinner可以帮助我们根据应用程序的需求调整其外观和行为,以提供更好的用户体验。在这个"自定义spinner的小列子"中,虽然存在一些缺陷,但我们可以从中学到一些关键的知识点。 首先,我们要了解Spinner的...
### 知识点详解:简单的自定义Spinner #### 一、引言 在Android开发过程中,经常需要使用到`Spinner`这一控件来提供用户选择的功能。然而,默认的`Spinner`样式可能无法满足设计师或者产品经理对UI的要求。因此,...
"自定义Spinner"是指开发者根据实际需求,对系统默认的Spinner进行功能扩展或者样式调整,以达到更好的用户体验或者特定的设计效果。本篇文章将深入探讨如何在Android中自定义Spinner,并通过实例项目`...
首先,我们创建一个新的布局文件,继承自LinearLayout,作为自定义Spinner的基础。这样做可以让我们更好地控制布局的结构和样式,同时还能支持自定义的点击事件和动画效果。在布局文件中,我们可以添加一个TextView...
这种效果通常通过自定义Spinner来完成。Spinner是Android中的一个下拉选择控件,它提供了用户友好的交互方式,允许用户在一组预设选项中进行选择。 **1. Spinner的基本使用** Spinner的使用主要包括两步:创建...
本文将详细介绍如何自定义Spinner以实现这种功能。 ### 1. 创建“请选择”项 首先,我们需要在布局文件中为Spinner定义一个特殊的TextView,用于显示“请选择”这一初始选项。这可以通过在Spinner的布局中添加一个...
然而,系统默认的Spinner样式可能不能满足所有设计需求,因此开发者常常需要自定义Spinner来实现更丰富的交互效果。本节我们将深入探讨如何使用PopupWindow实现一个自定义的Spinner,以获得类似网站下拉窗口的效果。...
然而,标题"android自定义Spinner"表明我们将探讨如何超越默认的显示方式,即避免使用Dialog形式,而是实现一个下拉式的Spinner显示。 1. **Spinner基础知识**: - Spinner是Android SDK中的一个视图组件,属于...
自定义Spinner的关键在于创建一个自定义的布局文件,该布局文件将作为每个Spinner条目的模板。通常,这会包含一个TextView,但也可以包括其他视图元素,如ImageView或CheckBox。例如,在`res/layout/custom_spinner...
然而,当我们需要自定义Spinner的下拉样式时,原生的Spinner就显得力不从心了。这时,我们可以利用PopupWindow来替代Spinner的下拉菜单。PopupWindow是一个可以浮现在屏幕任意位置的窗口,它的灵活性非常高,可以...
在`SpinnerTest`这个项目中,可能包含了实现上述自定义Spinner的示例代码,包括布局文件和对应的Adapter类。通过分析和运行这个示例,开发者可以更好地理解自定义Spinner下拉框的实现过程。 总的来说,自定义...
### 自定义Spinner的基本原理 1. **TextView**:TextView是Android中的基本组件,用于显示单行或多行文本。在这个自定义Spinner中,TextView通常作为界面默认显示的部分,展示当前选中的选项。 2. **Dialog**:...
博文参考:http://blog.csdn.net/geniuseoe2012/article/details/8723702 android仿web风格的spinner下拉框实现demo,实现更通用
在Android Studio中自定义Spinner,我们可以实现更丰富的视觉效果和交互体验。下面将详细介绍如何在Android Studio中实现一个自定义的Spinner。 首先,我们需要了解Spinner的基本用法。在布局XML文件中添加Spinner...
自定义Spinner主要涉及以下几个方面: 1. **自定义样式**:可以通过修改Spinner的默认主题或者创建自定义主题来改变其外观,如背景色、文字颜色等。 2. **自定义弹出列表**:默认的Spinner弹出列表是AlertDialog,...