當前位置:首頁 » 安卓系統 » androidspinner下拉

androidspinner下拉

發布時間: 2024-05-03 05:14:05

㈠ android里能為下拉菜單設置監聽事件么

Spinner組件的主要功能是用於進行下拉列表顯示的功能,當用戶選中下拉列表中的某個選項之後可以使用Spinner類中提供的setOnItemClickListener()方法進行監聽。

下拉菜單監聽範例:

packagecom.richard.onitemselectedlistener;

importandroid.os.Bundle;

importandroid.app.Activity;

importandroid.view.Menu;

importandroid.view.View;

importandroid.widget.AdapterView;

importandroid.widget.AdapterView.OnItemSelectedListener;

importandroid.widget.ArrayAdapter;

importandroid.widget.Spinner;

{

privateSpinnercity=null;//定義下拉列表框

privateSpinnerarea=null;//定義下拉列表框

privateString[][]areaData=newString[][]{//定義聯動菜單項

{"東城","西城","朝陽","大興","平谷"},//第一級子選項

{"黃浦","楊浦","閔行"},//第二級子選項

{"廣州"}};//第三級子選項

privateArrayAdapter<CharSequence>adapterArea=null;//下拉列表內容適配器

@Override

publicvoidonCreate(BundlesavedInstanceState){

super.onCreate(savedInstanceState);//父類onCreate()

super.setContentView(R.layout.activity_main);//調用布局管理器

this.city=(Spinner)super.findViewById(R.id.city);//取得組件

this.area=(Spinner)super.findViewById(R.id.area);//取得組件

this.city.setOnItemSelectedListener(

newOnItemSelectedListenerImpl());//設置監聽器

}

{

@Override

publicvoidonItemSelected(AdapterView<?>adapterView,Viewview,

intposition,longid){//選項選中時觸發

MainActivity.this.adapterArea=newArrayAdapter<CharSequence>(

MainActivity.this,

android.R.layout.simple_spinner_item,

MainActivity.this.areaData[position]);//實例化列表項

MainActivity.this.adapterArea.setDropDownViewResource(

android.R.layout.simple_spinner_dropdown_item);//設置下拉列表顯示風格

MainActivity.this.area

.setAdapter(MainActivity.this.adapterArea);//設置數據

}

@Override

publicvoidonNothingSelected(AdapterView<?>adapterView){//沒有選項時觸發

}

}

@Override

(Menumenu){

//Inflatethemenu;.

getMenuInflater().inflate(R.menu.main,menu);

returntrue;

}

}


㈡ android涓涓嬫媺鍒楄〃椋庢牸鍑轟簡闂棰

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;
/**
* 涓嬫媺鍒楄〃鏄劇ず
* */
public class SpinnerActivity extends Activity {

//瀹氫箟涓嬫媺鍒楄〃
private Spinner spinner_info = null;
//瀹氫箟涓轟笅鎷夊垪琛錛坰pinner錛夋坊鍔犱竴鏉′俊鎮鐨凚utton鎸夐挳
private Button btn_spinner_add = null;
//瀹氫箟涓轟笅鎷夊垪琛錛坰pinner錛夊垹闄や竴鏉′俊鎮鐨凚utton鎸夐挳
private Button btn_spinner_del = null;
//瀹氫箟涓涓瀛楃︿覆鏁扮粍
private String[] args = {"jinan","zhonggong","licheng"};
//鍐呭歸傞厤鍣ㄧ殑鏁版嵁婧愶紝鐢變簬鐢ㄥ埌浜嗗姩鎬佹坊鍔犳垨鍒犻櫎涓嬫媺鍒楄〃鏁版嵁錛屽洜姝ゆ暟鎹婧愰噰鐢ㄤ簡鍔ㄦ乴ist鏁扮粍鑰岄潪闈欐丼tring鏁扮粍
private List<String> list = null;
//瀹氫箟涓涓鍐呭歸傞厤鍣
private ArrayAdapter<String> arrayAdapter = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_spinner);
//鍒濆嬪寲鎺т歡淇℃伅
initView();
}

/**
* 鍒濆嬪寲鎺т歡淇℃伅
* */
private void initView(){
//鏁版嵁婧愭坊鍔犳暟鎹
list = new ArrayList<String>();
for(String arg:args){
list.add(arg);
}
//spinner瀵硅薄
spinner_info = (Spinner)findViewById(R.id.spinner_info);
//瀹氫箟騫跺垵濮嬪寲鍐呭歸傞厤鍣錛屽姞杞芥暟鎹鍙婃牱寮忥紝閲囩敤緋葷粺鑷甯︾殑鏍峰紡
arrayAdapter = new ArrayAdapter<String>(SpinnerActivity.this,android.R.layout.simple_spinner_item,list);
//璁劇疆涓嬫媺鍒楄〃鐨勬樉紺烘牱寮忥紙椋庢牸錛夛紝閲囩敤緋葷粺鑷甯︾殑鏍峰紡錛堥庢牸錛
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//涓轟笅鎷夊垪琛ㄦ坊鍔犻傞厤鍣
spinner_info.setAdapter(arrayAdapter);
/* 涓嬫媺鍒楄〃閫夋嫨浜嬩歡 */
spinner_info.setOnItemSelectedListener(new OnItemSelectedListener() {

@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
Toast.makeText(SpinnerActivity.this, "鎴戠偣閫変簡"+args[arg2].toString(), Toast.LENGTH_SHORT).show();

}

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

}

});
/* 涓嬫媺鍒楄〃錛坰pinner錛夋坊鍔犱竴鏉′俊鎮 */
btn_spinner_add = (Button)findViewById(R.id.btn_spinner_add);
btn_spinner_add.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {//
String add_info = "鎴戞槸鏂版坊鍔犵殑鏁版嵁";
//鍚戝唴瀹歸傞厤鍣ㄦ坊鍔犱竴鏉′俊鎮
arrayAdapter.add(add_info);
//鑾峰彇鏂版坊鍔犵殑淇℃伅鐨勪綅緗
int position = arrayAdapter.getPosition(add_info);
//璁劇疆鏂版坊鍔犵殑淇℃伅涓洪変腑鐘舵
spinner_info.setSelection(position);
}
});
/* 涓嬫媺鍒楄〃錛坰pinner錛夊垹闄や竴鏉′俊鎮 */
btn_spinner_del = (Button)findViewById(R.id.btn_spinner_delete);
btn_spinner_del.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
//縐婚櫎鎵閫変俊鎮
arrayAdapter.remove(spinner_info.getSelectedItem().toString());
}
});
}
}

㈢ android spinner怎麼用

android中的spinner控制項是表示下拉菜單的意思,按照如下步驟使用:

1、首先使用Android studio創建一個項目,如下圖:

4、最後去類中綁定控制項,並添加數據即可使用。

㈣ androidUI鎺т歡Spinner涓嬫媺鑿滃崟鎺т歡涓ょ嶄嬌鐢ㄦ柟娉

浣跨敤android鍒朵綔琛ㄥ崟涓涓嬫媺鑿滃崟鎵浣跨敤鐨勬帶浠禨pinner鍦╝ndroid涓涓烘垜浠瀹氫箟浜嗗嶮鍒嗗ソ鐢ㄥソ鐪嬬殑鏍峰紡錛屽悓鏍風畝鍗曚嬌鐢ㄦ柟娉曚篃鏈変袱縐嶃傚垎鍒鍙浠ユ墜宸ユ瀯寤烘暟鎹鍜屼嬌鐢▁ml鑾峰彇鏁版嵁錛屽綋鐒跺疄闄呴」鐩涓闇瑕佽幏鍙栫綉緇滄暟鎹銆傚彟澶朣pinner鎺т歡闇瑕佸疄鐜癘nItemSelectedListener鎺ュ彛鏉ュ畬鎴怱pinner涓嬫媺鑿滃崟鐨勫姛鑳姐傚叿浣撲嬌鐢ㄦ柟娉曞備笅銆
涓銆佹墜宸ユ瀯寤篠pinner涓嬫媺妗嗘暟鎹
鎸夌収姝e父嫻佺▼錛岄栧厛搴斿厛鎶婂瑰簲鐨刅iew鏄劇ず鍑烘潵錛岄渶瑕佺敤鍒癟extView鍜孲pinner鎺т歡鍗沖彲錛屾墍鍦‵orm Widgets鍗沖彲鎵懼埌錛岀浉鍏充唬鐮佸拰紺轟緥鍥懼備笅銆

鍥犱負涓嬫媺鑿滃崟闇瑕佹暟鎹錛屾墍浠ユ垜浠鍏堢敤List灝嗘暟鎹婧愭斁榪涘幓錛屽畾涔変負getDataSource()銆備唬鐮佺ず渚嬪備笅銆

鏈鍚庤佸壋寤篠pinnerActivity錛屽湪鑾峰彇UI鎺т歡涔嬪悗錛岀劧鍚庡啀鍒涘緩Spinner鎺т歡閫傞厤鍣ㄥ苟瀹氫箟涓嬫媺妗嗙殑鏍峰紡錛岃繖閲屾敞鎰廇rrayAdapter瀹氫箟鐨勬硾鍨嬫槸String褰㈠紡鐨勶紝鑰屼笖android宸茬粡涓烘垜浠瀹氫箟濂戒簡涓嬫媺妗嗙殑鏍峰紡錛屾瘮濡俛ndroid.R.layout.simple_spinner_dropdown_item錛屽洜姝ゆ垜浠鐩存帴璋冪敤鍗沖彲瀹屾垚Spinner涓嬫媺妗嗘帶浠剁殑鎿嶄綔銆傜浉鍏充唬鐮佸備笅銆
浜屻佷嬌鐢╔ML鏋勫緩Spinner涓嬫媺妗嗘暟鎹
浣跨敤XML鏋勫緩Spinner涓嬫媺妗嗘暟鎹錛岀涓姝ヨ繕鏄瑕佸厛灝哣iew瑙嗗浘琛ㄧ幇鍑烘潵錛屽拰鏂規硶涓浠g爜鐩稿悓銆傜洿鎺ョ収鎼鍗沖彲銆
榪欎釜鏂規硶鐢ㄥ埌XML錛屽洜姝ゅ氨闇瑕佸埌string.xml涓瀹氫箟鏁版嵁婧愶紝紺轟緥浠g爜濡備笅錛

鏈鍚庡氨鏄鍦ㄥ壋寤虹殑SpinnerActivity涓鐩存帴鑾峰彇string.xml涓鐨勬暟鎹婧愶紝榪欓噷闇瑕佹敞鎰忕殑鏄蹇呴』瀹炵幇騫舵敞鍐岀洃鍚鍣∣nItemSelectedListener錛屾墠鑳戒嬌涔嬪墠鐨勬搷浣滅敓鏁堛俿pinner.setOnItemSelectedListener(this);銆傚彟澶栵紝閫傞厤鍣ˋrrayAdapter濡傛灉鐢ㄥ埌createFromResource鑾峰彇鏁版嵁婧愶紝灝卞繀欏誨畾涔堿rrayAdapter鐨勬硾鍨嬩負CharSequence褰㈠紡錛屽惁鍒欐姤閿欍傚叿浣撲唬鐮佸拰瀹炵幇鏁堟灉鍥懼備笅銆

㈤ 如何打造Android自定義的下拉列表框控制項

一、概述
Android中的有個原生的下拉列表控制項Spinner,但是這個控制項有時候不符合我們自己的要求,
比如有時候我們需要類似windows 或者web網頁中常見的那種下拉列表控制項,類似下圖這樣的:

這個時候只有自己動手寫一個了。其實實現起來不算很難,
本文實現的方案是採用TextView +ImageView+PopupWindow的組合方案。
先來看看我們的自己寫的控制項效果圖吧:(源碼在文章下面最後給出哈!)

二、自定義下拉列表框控制項的實現
1. 自定義控制項用到的布局文件和資源:
結果框的布局頁面:dropdownlist_view.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:id="@+id/compound"
android:background="@drawable/dropdown_bg_selector" >

<TextView
android:id="@+id/text"
android:layout_width="250dp"
android:layout_height="40dp"
android:paddingLeft="10dp"
android:text="文本文字"
android:gravity="center_vertical"
android:textSize="14sp"
android:padding="5dp"
android:singleLine="true" />
<ImageView
android:id="@+id/btn"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_toRightOf="@+id/text"
android:src="@drawable/dropdown"
android:padding="5dp"
android:layout_centerVertical="true"
android:gravity="center"/>
</RelativeLayout>

下拉彈窗列表布局頁面:dropdownlist_popupwindow.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ListView
android:id="@+id/listView"
android:layout_width="280dp"
android:layout_height="wrap_content"
android:divider="#666666"
android:dividerHeight="1dp"
></ListView>

</LinearLayout>

selector資源文件:
dropdown_list_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/dropdownlist_item_press"/>
<item android:drawable="@color/dropdownlist_item"/>
</selector>

dropdown_bg_selector.xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/dropdownlist_press"/>
<item android:drawable="@color/dropdownlist_bg"/>
</selector>

2. 自定義下拉列表框控制項類的實現:
我們採用了TextView+ImageView+PopupWindow的組合方案,所以我的自定義控制項需要重寫ViewGroup,由於我們已經知道了,布局方向為豎直方向,所以這里,
我直接繼承LinearLayout來寫這個控制項。具體實現代碼如下:
package com.czm.xcdropdownlistview;

import java.util.ArrayList;

import android.annotation.SuppressLint;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.TextView;

@SuppressLint("NewApi")
/**
* 下拉列表框控制項
* @author caiming
*
*/
public class XCDropDownListView extends LinearLayout{

private TextView editText;
private ImageView imageView;
private PopupWindow popupWindow = null;
private ArrayList<String> dataList = new ArrayList<String>();
private View mView;
public XCDropDownListView(Context context) {
this(context,null);
// TODO Auto-generated constructor stub
}
public XCDropDownListView(Context context, AttributeSet attrs) {
this(context, attrs,0);
// TODO Auto-generated constructor stub
}
public XCDropDownListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
initView();
}

public void initView(){
String infServie = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater layoutInflater;
layoutInflater = (LayoutInflater) getContext().getSystemService(infServie);
View view = layoutInflater.inflate(R.layout.dropdownlist_view, this,true);
editText= (TextView)findViewById(R.id.text);
imageView = (ImageView)findViewById(R.id.btn);
this.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(popupWindow == null ){
showPopWindow();
}else{
closePopWindow();
}
}
});
}
/**
* 打開下拉列表彈窗
*/
private void showPopWindow() {
// 載入popupWindow的布局文件
String infServie = Context.LAYOUT_INFLATER_SERVICE;
LayoutInflater layoutInflater;
layoutInflater = (LayoutInflater) getContext().getSystemService(infServie);
View contentView = layoutInflater.inflate(R.layout.dropdownlist_popupwindow, null,false);
ListView listView = (ListView)contentView.findViewById(R.id.listView);

listView.setAdapter(new XCDropDownListAdapter(getContext(), dataList));
popupWindow = new PopupWindow(contentView,LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(getResources().getDrawable(R.color.transparent));
popupWindow.setOutsideTouchable(true);
popupWindow.showAsDropDown(this);
}
/**
* 關閉下拉列表彈窗
*/
private void closePopWindow(){
popupWindow.dismiss();
popupWindow = null;
}
/**
* 設置數據
* @param list
*/
public void setItemsData(ArrayList<String> list){
dataList = list;
editText.setText(list.get(0).toString());
}
/**
* 數據適配器
* @author caiming
*
*/
class XCDropDownListAdapter extends BaseAdapter{

Context mContext;
ArrayList<String> mData;
LayoutInflater inflater;
public XCDropDownListAdapter(Context ctx,ArrayList<String> data){
mContext = ctx;
mData = data;
inflater = LayoutInflater.from(mContext);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mData.size();
}

@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}

@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
// 自定義視圖
ListItemView listItemView = null;
if (convertView == null) {
// 獲取list_item布局文件的視圖
convertView = inflater.inflate(R.layout.dropdown_list_item, null);

listItemView = new ListItemView();
// 獲取控制項對象
listItemView.tv = (TextView) convertView
.findViewById(R.id.tv);

listItemView.layout = (LinearLayout) convertView.findViewById(R.id.layout_container);
// 設置控制項集到convertView
convertView.setTag(listItemView);
} else {
listItemView = (ListItemView) convertView.getTag();
}

// 設置數據
listItemView.tv.setText(mData.get(position).toString());
final String text = mData.get(position).toString();
listItemView.layout.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setText(text);
closePopWindow();
}
});
return convertView;
}

}
private static class ListItemView{
TextView tv;
LinearLayout layout;
}

}

三、如何使用該自定義下拉列表框控制項
使用該控制項和使用普通的自帶的控制項一樣,首先需要在布局文件中引用該控制項:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.czm.xcdropdownlistview.MainActivity"
tools:ignore="MergeRootFrame" >

<com.czm.xcdropdownlistview.XCDropDownListView
android:id="@+id/drop_down_list_view"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />

</RelativeLayout>

其次,就是在代碼中使用該控制項:
package com.czm.xcdropdownlistview;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
/**
* 使用下拉列表框控制項 示例
* @author caiming
*
*/
public class MainActivity extends Activity {

XCDropDownListView dropDownListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

dropDownListView = (XCDropDownListView)findViewById(R.id.drop_down_list_view);
ArrayList<String> list = new ArrayList<String>();
for(int i = 0;i< 6;i++){
list.add("下拉列表項"+(i+1));
}
dropDownListView.setItemsData(list);

}

}

對了,這個控制項中,我沒有實現點擊item項回調介面,這個可能對有些寫慣了回調的可能覺得少了寫什麼的感覺,有興趣的你可以自己添加相關回調操作哈,這個大家應該都會把。

㈥ 怎麼改變android spinner下拉列表的寬度

設置spinner下拉菜單的寬度可在布局文件中添加如下語句:
android:dropDownWidth="100dp"

其中,100dp就是下拉菜單的寬度值,單位為像素。

Spinner控制項是一種列表類型的控制項,它的繼承關系如下:
java.lang.Object
↳ android.view.View
↳ android.view.ViewGroup
↳ android.widget.AdapterView<Textends android.widget.Adapter>
↳ android.widget.AbsSpinner
↳ android.widget.Spinner
android.widget.Spinner繼承了android.view.ViewGroup類。

熱點內容
華為編譯器系列 發布:2024-11-27 08:29:42 瀏覽:854
長江存儲上海 發布:2024-11-27 08:29:31 瀏覽:328
crm客戶管理系統源碼 發布:2024-11-27 07:59:26 瀏覽:363
匠辰app安卓在哪裡下載 發布:2024-11-27 07:47:12 瀏覽:731
sql表操作 發布:2024-11-27 07:46:31 瀏覽:813
雲頂之腳本 發布:2024-11-27 07:45:37 瀏覽:658
編程箴言pdf 發布:2024-11-27 07:43:59 瀏覽:369
傳奇腳本經驗卷 發布:2024-11-27 07:43:16 瀏覽:679
我的世界手機版國際服怎麼創建自己的伺服器 發布:2024-11-27 07:38:19 瀏覽:693
java中立方 發布:2024-11-27 07:07:05 瀏覽:484