第三方android下拉框控件_android 第三方下拉类表控件 - CSDN
  • android完美下拉框控件

    2020-07-29 19:11:11
    android完美下拉框控件android完美下拉框控件android完美下拉框控件android完美下拉框控件
  • Android下拉框控件Spinner的使用

    万次阅读 2012-06-19 10:49:06
    select_spinner.xml xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation

    select_spinner.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"
      >
    
      <TextView  
        android:id="@+id/TextView01"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="this is FirstActivity of AppB"
        />
    
        <Spinner 
        android:id="@+id/spinner" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        />
      
    </LinearLayout>

    代码实现:

     protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.select_spinner);
            
            
            
            
            spinner = (Spinner) findViewById(R.id.spinner);
            spinner.setPrompt("请选择");
            final int [] drawableIds = {R.drawable.aa, R.drawable.icon};
            final int [] msgIds = {R.string.aa, R.string.bb};
            
            
            
            BaseAdapter baseAdapter = new BaseAdapter() {
    
                @Override
                public int getCount() {
                    return msgIds.length;
                }
    
                @Override
                public Object getItem(int position) {
                    return null;
                }
    
                @Override
                public long getItemId(int position) {
                    return 0;
                }
    
                @Override
                public View getView(int position, View convertView, ViewGroup parent) {
                 // 动态生成每个下拉项对应的View,每个下拉项View由LinearLayout
                 // 中包含一个ImageView及一个TextView构成
                 // 初始化LinearLayout
                 LinearLayout ll = new LinearLayout(TestActivity.this);
                 ll.setOrientation(LinearLayout.HORIZONTAL);
                 // 初始化ImageView
                 ImageView ii = new ImageView(TestActivity.this);
                 ii.setImageDrawable((getResources().getDrawable(drawableIds[position])));
                 ll.addView(ii);
                 // 初始化TextView
                 TextView tv = new TextView(TestActivity.this);
                 tv.setText(" " + getResources().getText(msgIds[position]));
                 tv.setTextColor(R.color.blue);
                 tv.setTextSize(24);
                 ll.addView(tv);
                 return ll;
                }
                
            };
            
            
            spinner.setAdapter(baseAdapter);
            spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
                @Override 
                public void onItemSelected(AdapterView<?> arg0, View view, 
                        int arg2, long arg3) { 
                    //被选中时候发生的动作
                    Log.i("chen", "===="+arg0+"   "+view+"    "+arg2+"    "+arg3);
                    
                 // 获取主界面TextView
                    TextView tv = (TextView) findViewById(R.id.TextView01);
                    // 获取当前选中选项对应的LinearLayout
                    LinearLayout ll = (LinearLayout) view;
                    // 获取其中的TextView
                    TextView tvn = (TextView) ll.getChildAt(1);
                    // 用StringBuilder动态生成信息
                    StringBuilder sb = new StringBuilder();
                    sb.append(getResources().getText(R.string.app_name));
                    sb.append(":");
                    sb.append(tvn.getText());
                    // 信息设置进住界面
                    tv.setText(sb.toString());
                } 
                @Override 
                public void onNothingSelected(AdapterView<?> arg0) { 
                    
                } 
            });
        }


    如果用ArrayAdapter实现如下:

    //设置下拉框控件的标题文本内容:
    spinner.setPrompt("请选择");
    
    //定义下拉框内容:
    String [] datas = {“ATAAW.COM”,”Android.com”,”Google.com”};
    
    //定义添加适配器:
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( 
    this, datas, android.R.layout.simple_spinner_item); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter);
    
    //响应下拉框的选中值发生变化的事件处理:
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
                @Override 
                public void onItemSelected(AdapterView<?> arg0, View arg1, 
                        int arg2, long arg3) { 
                    //被选中时候发生的动作 
                } 
                @Override 
                public void onNothingSelected(AdapterView<?> arg0) { 
                } 
            });



    展开全文
  • Android自定义的下拉列表框控件

    万次阅读 2020-08-10 10:40:47
    Android中的有个原生的下拉列表控件Spinner,但是这个控件有时候不符合我们自己的要求, 比如有时候我们需要类似windows 或者web网页中常见的那种下拉列表控件,类似下图这样的: 这个时候只有自己动手...

    一、概述

    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>

     

    复制代码
    <?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 caizhiming
     *
     */
    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 caizhiming
         *
         */
        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 caizhiming
     *
     */
    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项回调接口,这个可能对有些写惯了回调的可能觉得少了写什么的感觉,有兴趣的你可以自己添加相关回调操作哈,这个大家应该都会把。

    四、源码下载

    最后给出源码的下载:
    http://download.csdn.net/download/u013068887/10031736

    本文参考:
    http://www.cnblogs.com/JczmDeveloper/p/4425010.html

     

    复制代码
    <?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>

     

     

    展开全文
  • Android 下拉框第三方控件 NiceSpinner

    万次阅读 2018-04-08 18:00:33
    NiceSpinner 是 Android 端的一款第三方控件,自带箭头动画效果GitHub地址效果图如下:目录1. 导入模块2. 代码测试1. 导入模块在 Github 下载并导入模块或者在 build.gradle 中修改:allprojects { repositories ...

    NiceSpinner 是 Android 端的一款第三方控件,自带箭头动画效果

    GitHub地址

    效果图如下:



    目录

    1. 导入模块

    2. 代码测试



    1. 导入模块

    在 Github 下载并导入模块

    或者在 build.gradle 中修改:

    allprojects {
        repositories {
            ...
            maven { url "https://jitpack.io" }
        }
    }
    
    dependencies {
        compile 'com.github.arcadefire:nice-spinner:1.3.1'
    }

    建议导入模块,可以修改。



    2. 代码测试

    在 activity_main.xml 文件中加入:

    <org.angmarch.views.NiceSpinner
        android:id="@+id/nice_spinner"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        app:arrowTint="@color/light_gray"
        app:textTint="@color/myBlack"
        app:dropDownListPaddingBottom="60dp"
        android:layout_marginEnd="12dp"
        android:layout_marginRight="12dp"/>
    nametypeinfo
    arrowTintcolorsets the color on the drop-down arrow
    hideArrowbooleanset whether show or hide the drop-down arrow
    arrowDrawablereferenceset the drawable of the drop-down arrow
    textTintcolorset the text color
    dropDownListPaddingBottomdimensionset the bottom padding of the drop-down list
    backgroundSelectorintegerset the background selector for the drop-down list rows

    在 MainActivity.java 中加入:

    private NiceSpinner niceSpinner;
    List<String> spinnerData = new LinkedList<>(Arrays.asList("一月", "二月", "三月", "四月",
            "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"));
    niceSpinner = findViewById(R.id.nice_spinner);
    niceSpinner.attachDataSource(spinnerData);
    niceSpinner.setBackgroundResource(R.drawable.textview_round_border);
    niceSpinner.setTextColor(Color.WHITE);
    niceSpinner.setTextSize(13)
    niceSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            
        }
    
        @Override
        public void onNothingSelected(AdapterView<?> parent) {}
    })
    
    


    textview_round_border.xml (设置圆角等属性,放在 drawable 目录下)

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <!-- view背景色 -->
        <solid android:color="#52a2e2" />
        <!-- 边框颜色 宽度 -->
        <stroke
            android:width="1dip"
            android:color="#52a2e2" />
        <!-- 边框圆角 -->
        <corners
            android:bottomRightRadius="6dp"
            android:topRightRadius="6dp"
            android:bottomLeftRadius="6dp"
            android:topLeftRadius="6dp"/>
    </shape>


    在 nice-spinner-master/src/main/java/NiceSpinner 目录下可以修改属性


    展开全文
  • Android第三方开源下拉框:NiceSpinner

    万次阅读 2016-06-01 10:29:08
    Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定制或者第三方设计的下拉框Spinner。...
    

    Android第三方开源下拉框:NiceSpinner

    Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定制或者第三方设计的下拉框Spinner。
    NiceSpinner是一个第三方开源的下拉框Spinner,其在github上的项目主页是:https://github.com/arcadefire/nice-spinner
    NiceSpinner原设计效果如动图所示:


    但是通常开发者对于可能还需要对于下拉框中出现的文字和样式进行二次开发,比如如果希望NiceSpinner的选中文本颜色或者下拉弹出框中的文字有些变化,则需要重新二次定制NiceSpinner code项目中的NiceSpinnerBaseAdapter, NiceSpinnerBaseAdapter中的getView返回的view表现形式即为下拉框中的结果:

    //这个方法将返回下拉列表的形制,可以在这里修改和二次定制开发。
        //zhang phil 注解
        @Override
        @SuppressWarnings("unchecked")
        public View getView(int position, View convertView, ViewGroup parent) {
            TextView textView;
    
            if (convertView == null) {
                convertView = View.inflate(mContext, R.layout.spinner_list_item, null);
                textView = (TextView) convertView.findViewById(R.id.tv_tinted_spinner);
    
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
                    textView.setBackground(ContextCompat.getDrawable(mContext, mBackgroundSelector));
                }
    
                convertView.setTag(new ViewHolder(textView));
            } else {
                textView = ((ViewHolder) convertView.getTag()).textView;
            }
    
            textView.setText(getItem(position).toString());
            textView.setTextColor(mTextColor);
            
            //这里是被zhang phil修改的,用于改变下拉列表的文字颜色。
            textView.setTextColor(Color.RED);
    
            return convertView;
        }


    修改后,写一个小demo演示,测试的MainActivity.java:

    package zhangphil.demo;
    
    import java.util.Arrays;
    import java.util.LinkedList;
    import org.angmarch.views.NiceSpinner;
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    
    
    public class MainActivity extends Activity {
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    
    		setContentView(R.layout.activity_main);
    
    		NiceSpinner niceSpinner = (NiceSpinner) findViewById(R.id.nice_spinner);
    		niceSpinner.setTextColor(Color.GREEN);
    
    		LinkedList<String> data=new LinkedList<>(Arrays.asList("Zhang", "Phil", "@", "CSDN"));
    		niceSpinner.attachDataSource(data);
    	}	
    }
    


    布局文件:

    <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"
        tools:context="zhangphil.demo.MainActivity" >
    
        <org.angmarch.views.NiceSpinner
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:id="@+id/nice_spinner" />
    
    </RelativeLayout>
    



    代码运行结果:



    我把NiceSpinner的代码库(library和实例demo)全部作为一个文件目录push到github上面,项目主页是:https://github.com/zhangphil/zhangphil-nice-spinner


    展开全文
  • android中自定义下拉框

    千次阅读 2014-12-07 19:24:07
    android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在编辑框...
  • Android原生的下拉框Spinner基本上可以满足Android开发对于下拉选项的设计需求,但现在越来越流行的下拉框不满足于Android原生提供的下拉框Spinner所提供的设计样式,而改用自定制或者第三方设计的下拉框Spinner。...
  • Android实现(省、市、县)级联动下拉框 下拉列表spinner 主要实现办法:动态加载各级下拉值的适配器 在监听本级下拉框,当本级下拉框的选中值改变时,随之修改下级的适配器的绑定值
  • 运用面向对象的思想,通过XML或其它方式,灵活的调整省份和城市的数据,以此实现联动下拉框的数据装配
  • 最近做的有关物流的APP中,货物数量的单位需要在给定的范围选取(比如:吨、、件),但ios没有类似Android中的下拉框,我就自己想了办法自制了一个,效果还算满意;以后项目组的本科小师妹会帮我一起做ios端的开发...
  • Android实现多层级Spinner列表选项实时更新树形层级 运行结果如图: Java代码: package com.example.spinnerdemo; import android.os.Bundle; import android.app.Activity;...
  • Android弹出选项框及指示箭头动画选择Android原生的Spinner提供了下拉列表选项框,但在一些流行的APP中,原生的Spinner似乎不太受待见,而通常会有下图所示的下拉列表选项框:初始化状态:点击弹出下拉选择选项...
  • 先看效果图是否合口 在登录界面选择角色,上下箭头是会变化的,默认是选择学生,当选择老师时,对应的icon、文字相应的改变(样式可以随意更改)。 使用的是RecycleView+自定义适配器+PopupWindow实现的: ...
  • 用到的组件1、通过CocoaPods安装项目名称项目信息AFNetworking网络请求组件FMDB本地数据库组件SDWebImage多个缩略图缓存组件UICKeyChainStore...DateTools友好化时间MBProgressHUD一款提示框第三方库MWPhotoBrowser一款简单的...
  • 这里主要根据书本知识网络知识和使用过的控件及好用的第三方控件做一个总结统计,肯定不全面,但一下也想不到多少。一步步写下去发现真的是越基础的控件越精彩,因为现在有很多封装好的控件很少会去调原生的自己写,...
  • Spinner是一个下拉框控件,当用户选择的时候,可以提供一个下拉列表将所有可选的项列出来,每次只能选择一项。它的项来自于与之相关联的适配器中。Spinner的使用,可以极大提高用户的体验性。 ProgressBar控件该...
  • 一、相对布局RelativeLayout RelativeLayout的下级视图的位置是相对位置,得有具体的参照物才能确定最终位置。 如果不设定下级视图的参照物,那么下级视图默认显示在RelativeLayout内部的左上角。...
  • 自定义控件基础01_菜单轮__viewPager_下拉框_自定义开关 1,自定义控件分类: 1.1组合控件:由安卓中原生的控件组合起来,配合动画达成的效果 1.2自定义控件 1.3组合控件案例演示: 案例:优酷菜单...
  • Android仿美团下拉菜单

    千次阅读 2019-08-30 10:36:34
    下拉菜单现在在项目中挺常见的,比如说我...当然,为了简单,我也是在网上找了一个第三方控件,github上面也有这个项目,大家可以去下载下来自己看看,也可以跟着我的思维走; github项目地址:添加链接描述 ...
  • 自动提示文本框和下拉框 高级控件与低级控件区别 是否使用适配器 适配器种类和作用 2.1 种类 数组适配器 ArrayAdapter new ArrayAdapter(this,R.layout.actv_style, names); 简单适配器 SimpleAdapter 也叫“并...
1 2 3 4 5 ... 20
收藏数 384
精华内容 153
关键字:

第三方android下拉框控件