Android 自定义Spinner字体、颜色、大小
昨天在公司项目中遇到Spinner颜色,字体,大小的困惑。所以今天也总结一下这方面知识。这个其实很简单,要改变字体,颜色以及大小,无非就是不要用系统自带的样式。自已例外写一个layout调用就行了。我就是这样做的。本文例子还有Spinner两种弹出方式,下拉框以及弹出框。加载数据源的两种方式。下面看代码介绍。
本文项目源码地址:http://download.csdn.net/detail/qq_16064871/8583085
转载请注明出处: http://blog.csdn.net/qq_16064871
package com.example.customspinerdemo; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity implements OnItemSelectedListener { private Spinner mspinner1; private Spinner mspinner2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mspinner1 = (Spinner) findViewById(R.id.spinner1); if (mspinner1 != null) { mspinner1.setOnItemSelectedListener(this); } mspinner2 = (Spinner) findViewById(R.id.spinner2); if (mspinner2 != null) { mspinner2.setOnItemSelectedListener(this); } // 在这里两个layout自已定义效果,不用系统自带. // 数据源手动添加 ArrayAdapter<String> spinnerAadapter = new ArrayAdapter<String>(this, R.layout.custom_spiner_text_item, getDataSource()); spinnerAadapter .setDropDownViewResource(R.layout.custom_spinner_dropdown_item); mspinner1.setAdapter(spinnerAadapter); // 通过加载xml文件配置的数据源 ArrayAdapter spinnerAadapter2 = ArrayAdapter.createFromResource(this, R.array.spiner2_array, R.layout.custom_spiner_text_item); spinnerAadapter2 .setDropDownViewResource(R.layout.custom_spinner_dropdown_item); mspinner2.setAdapter(spinnerAadapter2); } public List<String> getDataSource() { List<String> spinnerList = new ArrayList<String>(); spinnerList.add("北京"); spinnerList.add("上海"); spinnerList.add("广州"); spinnerList.add("北京"); spinnerList.add("上海"); spinnerList.add("广州"); return spinnerList; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { if (arg0.getId() == R.id.spinner1) { String itemString = mspinner1.getItemAtPosition(arg2).toString(); Toast.makeText(this, "你选中的是" + itemString, Toast.LENGTH_SHORT) .show(); return; } else if (arg0.getId() == R.id.spinner2) { String itemString2 = mspinner2.getItemAtPosition(arg2).toString(); Toast.makeText(this, "你选中的是" + itemString2, Toast.LENGTH_SHORT) .show(); return; } } @Override public void onNothingSelected(AdapterView<?> arg0) { } }
custom_spiner_text_item.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textViewCustom" style="?android:attr/spinnerItemStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:ellipsize="marquee" android:singleLine="true" android:textAlignment="inherit" android:textColor="#222288" android:textSize="16sp" />
custom_spinner_dropdown_item.xml
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/checkedTextViewCustom" style="?android:attr/spinnerDropDownItemStyle" android:layout_width="match_parent" android:layout_height="50dp" android:ellipsize="marquee" android:singleLine="true" android:textAlignment="inherit" android:textColor="#222288" android:textSize="16sp" />
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:gravity="center_vertical" > <TextView android:id="@+id/textView1" android:layout_width="116dp" android:layout_height="wrap_content" android:text="自定义下拉框:" android:textSize="16sp" /> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" > <TextView android:id="@+id/textView2" android:layout_width="116dp" android:layout_height="wrap_content" android:text="自定义弹出框:" android:textSize="16sp" /> <Spinner android:id="@+id/spinner2" android:layout_width="202dp" android:layout_height="wrap_content" android:spinnerMode="dialog" /> </LinearLayout> </LinearLayout>
在xml里面配置Spinner时默认是下拉框的。
如果要换成弹出框加上这个android:spinnerMode="dialog"
以其他监听触发spinner语句:mspinner.performClick();
本文项目源码地址:http://download.csdn.net/detail/qq_16064871/8583085
转载请注明出处: http://blog.csdn.net/qq_16064871
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。