Android 自訂Spinner字型、顏色、大小,androidspinner

來源:互聯網
上載者:User

Android 自訂Spinner字型、顏色、大小,androidspinner

昨天在公司項目中遇到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;@Overrideprotected 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;}@Overridepublic 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;}@Overridepublic 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;}}@Overridepublic 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



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.