自定义spinner实现修改字体大小、颜色等

spinner默认显示的字体颜色为纯黑色,在一些情况下,我们想要改变这种颜色,但是却发现在spinner的属性里面并没有setTextColor类似这样的属性,也就是说我们无法简单的直接设置其内部字体的颜色。

通过查找资料,我们可以通过使用adapter的方式来实现我们想要的效果。

效果如图:

代码如下:

1、写一个单独的布局文件personal_spinner.xml,里面只包含一个TextView,其作用是用来设置Spinner内文字的属性,比如大小、颜色等。

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    android:textColor="#909295"
    android:textSize="14sp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    />

2、在activity_main.xml中定义一个spinner,因为要实现上图效果,做了一些简单的布局(只需注意spinner即可)

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <LinearLayout
        style="@style/personal_edittext_style" >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:text="密保问题"
            android:textColor="#ffffff"
            android:textSize="16sp"
			android:padding="10dp"/>
	<LinearLayout 
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:background="#ffffff"
		android:layout_margin="4dp"
		    >
		 <Spinner
                  android:id="@+id/personal_pay_spinner"
                  android:layout_width="0dip"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_vertical"
                  android:paddingLeft="4dp"
                  android:layout_weight="1"   
                  android:background="#00000000"
                  android:entries="@array/password_protection" />
		 <ImageView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_gravity="center_vertical"
                  android:paddingRight="4dp"
                  android:src="@drawable/personal_more_more" />
	</LinearLayout>
     </LinearLayout>

</RelativeLayout>

3、在MainActivity中,使用ArrayAdapter进行绑定

//引用arrays中的选项
		String[] curs = getResources().getStringArray(R.array.password_protection);
		//将写好的personal_spinner引用进来,此时改变的是选中后的情况,如果这里不想修改,可引用Android默认的布局,
		//比如android.R.layout.simple_spinner_item
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
				R.layout.personal_spinner, curs);
		//此处修改的部分为 点击后弹出的选择框,同上可引用自己写的布局文件,也可以使用默认布局,此处使用的是默认布局
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		mSpinner.setAdapter(adapter);

		mSpinner.setOnItemSelectedListener(new OnItemSelectedListener(){

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int position, long id) {
				position++;
				//点击处理事件
			}
			@Override
			public void onNothingSelected(AdapterView<?> parent) {
			}		
		});

好了完工,奉上示例代码 点击打开链接  

你可能感兴趣的:(Spinner,android,自定义,字体)