精华内容
下载资源
问答
  • Android自定义下拉框

    2015-10-29 22:32:33
    Android自定义下拉框  Android 原生的Spinner下拉框无法满足项目的需要,所以自已用PopupWindow写了一自定下拉框,效果如下: java代码:CommonSpinnerpackage guojunustb.commonspinner; import android...

    Android自定义下拉框

          Android 原生的Spinner下拉框无法满足项目的需要,所以自已用PopupWindow写了一自定下拉框,效果如下:



    java代码:CommonSpinner

    package guojunustb.commonspinner;
    
    import android.content.Context;
    import android.graphics.drawable.ColorDrawable;
    import android.util.AttributeSet;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.Button;
    import android.widget.ListView;
    import android.widget.PopupWindow;
    import android.widget.TextView;
    
    
    import java.util.List;
    
    /**
     * Created by guojun on 2015/10/29.
     */
    public class CommonSpinner extends TextView implements View.OnClickListener {
        private TextView mTvTopView;
        private Context mContext;
        private SpinnerPopupWindow mPopupWindow;
        private List<String> mDatas;
        private OnSpinnerItemSelectListener mOnSpinnerItemSelectListener;
    
        public CommonSpinner(Context context) {
            this(context, null);
        }
    
        public CommonSpinner(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        public CommonSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            mTvTopView = this;
            mContext = context;
            mPopupWindow = new SpinnerPopupWindow(mContext);
            setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
            mPopupWindow.showPopupWindow(mTvTopView);
        }
    
        public void setData(List<String> datas) {
            this.mDatas = datas;
        }
    
        class SpinnerPopupWindow extends PopupWindow {
            private Context mContext;
            private ListView mListView;
            private MyAdapter mMyAdapter;
    
            public SpinnerPopupWindow(Context context) {
                init(context);
            }
    
            private void init(Context context) {
                mContext = context;
                LayoutInflater inflater = (LayoutInflater) context
                        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                View view = inflater.inflate(R.layout.layout_spinner, null);
                mListView = (ListView) view.findViewById(R.id.listview);
                mListView.setItemsCanFocus(true);
                mMyAdapter = new MyAdapter();
                mListView.setAdapter(mMyAdapter);
                this.setContentView(view);
                //设置宽高
                this.setWidth(mListView.getLayoutParams().width);
                this.setHeight(mListView.getLayoutParams().height);
                //让popupwindow获取焦点
                this.setFocusable(true);
                this.setOutsideTouchable(true);
                this.update();
    
                // 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
                ColorDrawable dw = new ColorDrawable(00000000);
                this.setBackgroundDrawable(dw);
                //设置动画
                this.setAnimationStyle(R.style.SpinnerPopupWindowAnim);
    
            }
    
            class MyAdapter extends BaseAdapter {
    
                @Override
                public int getCount() {
                    return mDatas == null ? 0 : mDatas.size();
                }
    
                @Override
                public Object getItem(int position) {
                    return null;
                }
    
                @Override
                public long getItemId(int position) {
                    return position;
                }
    
                @Override
                public View getView(final int position, View convertView, ViewGroup parent) {
                    if (convertView == null) {
                        convertView = View.inflate(mContext, R.layout.item_spinner, null);
                    }
                    Button bt = ViewHolder.get(convertView,R.id.bt_item);
                    bt.setText(mDatas.get(position));
                    bt.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            showPopupWindow(mTvTopView);
                            mTvTopView.setText(mDatas.get(position));
                            if (null != mOnSpinnerItemSelectListener) {
                                mOnSpinnerItemSelectListener.onItemSelectListener(position);
                            }
                        }
                    });
                    return convertView;
                }
            }
    
            public void showPopupWindow(View parent) {
                if (!this.isShowing()) {
                    this.showAsDropDown(parent, -(this.getWidth() -parent.getWidth())/2, 0);
                } else {
                    this.dismiss();
                }
            }
    
        }
    
        public void setOnSpinnerItemSelectListener(OnSpinnerItemSelectListener listener) {
            this.mOnSpinnerItemSelectListener = listener;
        }
    
    
        public interface OnSpinnerItemSelectListener {
            void onItemSelectListener(int pos);
        }
    
    }
    
    布局文件:layout_spinner.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="111dp"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <ListView
            android:id="@+id/listview"
            android:layout_width="111dp"
            android:layout_height="190dp"
            android:paddingTop="10dp"
            android:descendantFocusability="blocksDescendants"
            android:background="@mipmap/class_tab_putup"
            android:divider="@null"
            android:scrollbars="none" />
    
    </LinearLayout>

    Activity文件

    package guojunustb.commonspinner;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Toast;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends Activity {
        private CommonSpinner mCommonSpinner;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            assignViews();
        }
    
        private void assignViews() {
            mCommonSpinner = (CommonSpinner) findViewById(R.id.common_spinner);
            mCommonSpinner.setData(getDatas());
            mCommonSpinner.setOnSpinnerItemSelectListener(new CommonSpinner.OnSpinnerItemSelectListener() {
                @Override
                public void onItemSelectListener(int pos) {
                    Toast.makeText(MainActivity.this, "pos="+pos, Toast.LENGTH_SHORT).show();
                }
            });
        }
    
        private List<String> getDatas() {
            ArrayList<String> list=new ArrayList<>();
            for (int i=1;i<15;i++){
                list.add("第"+i+"周");
            }
            return list;
        }
    
    }
    

    源码下载地址


    展开全文
  • Android自定义下拉框,用PopupWindow实现
  • Android 自定义下拉框的实现,效果可到http://www.cnblogs.com/awe061/p/5221145.html查看
  • Android自定义下拉框的简单实现

    千次阅读 2018-04-18 17:30:46
    安卓自带的Spinner不会用啊,换个图片都好麻烦,更别提做各种自定义的效果了自己尝试着写了个能用...自定义控件(这里使用LinearLayout,在线性布局末尾添加一个ImageView,并对ImageView设置)public class Custom...

    安卓自带的Spinner不会用啊,换个图片都好麻烦,更别提做各种自定义的效果了

    自己尝试着写了个能用的

    • 实现思路:

    给予一个控件点击事件,弹出PopupWindow,通过对PopupWindow内的控件设置点击事件,完成对其他界面的更新。

    • 具体实现:
    1.自定义控件(这里使用LinearLayout,在线性布局末尾添加一个ImageView,并对ImageView设置)
    public class CustomSpinner extends LinearLayout {
          private ImageView img;
          public CustomSpinner( Context context ) {
                super( context );
          }
          
          public CustomSpinner( Context context,
                      @Nullable AttributeSet attrs ) {
                super( context, attrs );
          }
          
          public CustomSpinner( Context context, @Nullable AttributeSet attrs, int defStyleAttr ) {
                super( context, attrs, defStyleAttr );
          }
    //布局文件读取之后
          @Override protected void onFinishInflate() {
                super.onFinishInflate();
                init();
          }
          
          private void init() {
                setOrientation( HORIZONTAL );
                img = new ImageView( MyApplication.getInstance().getContext() );
                img.setImageResource( R.drawable.xxx );
                LinearLayout.LayoutParams params =
                            new LinearLayout.LayoutParams( LayoutParams.WRAP_CONTENT,
                                        LayoutParams.WRAP_CONTENT );
                //new LinearLayout.LayoutParams( 1, getHeight() );
                params.gravity = Gravity.END;
                params.rightMargin = 5;
                addView( img, params );
    }
    }

    2.实现下拉框

    下拉框具体教程很多,这里做最简单的实现,为了方便控制,在Custom中添加一个私有变量

          private PopupWindow pw;

    以及一个下拉框的布局并暴露设置方法

          private int layout = R.layout.default_popwindow;
          //设置下拉框布局
          public void setLayout( int layout ) {
                this.layout = layout;
          }

    然后为图标添加点击事件:

                img.setOnClickListener( new OnClickListener() {
                      @Override public void onClick( View view ) {
                            //弹出下拉框
                            View v = LayoutInflater.from( MyApplication.getInstance().getContext() )
                                        .inflate( layout, null );
                            //下拉框宽度与CustomSpinner一致,高度为400
                            pw = new PopupWindow( v, getWidth(), 400, true );
                            //在CustomSpinner下弹出
                            pw.showAsDropDown( (View) img.getParent() );
                      }
                } );

    3.添加回调接口,用于处理下拉框的点击事件

          private onSpinnerClickListener listener;
          
          /**
           * 通过回调接口传递下拉框对象
           * 以供添加其他事件
           */
          public interface onSpinnerClickListener {
                void setPopupWindow( View view );
          }
          //设置回调接口
          public void setListener( onSpinnerClickListener listener ) {
                this.listener = listener;
          }

    然后在图标的点击事件中,下拉框弹出之后,调用接口中设置的方法

          //当下拉框出现时,传递整个下拉框对象
          listener.setPopupWindow( v );

    v即为图标点击事件中整个下拉框对象

    至此,整个下拉框控件准备完毕

    • 使用下拉框
    布局文件中直接引入
            <xxx.widget.CustomSpinner
                    android:id="@+id/cs"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
            <TextView
                    android:id="@+id/tv"
                    android:textColor="@android:color/black"
                    android:layout_width="0dp"
                    android:layout_weight="1"
                    android:layout_height="wrap_content"/>
            </xxx.widget.CustomSpinner>

    代码中调用

                CustomSpinner cs = findViewById( R.id.cs );

    设置下拉框布局

                cs.setLayout(R.layout.xxx);

    设置监听

                cs.setListener( new CustomSpinner.onSpinnerClickListener() {
                      @Override public void setPopupWindow( View view ) {
                       //获得你下拉框布局中想要的控件
                       View v = view.findViewById( R.id.xxx );
                       //为该控件设置点击事件                      
                       v.setOnClickListener( new View.OnClickListener() {
                                  @Override public void onClick( View view ) {
                                     //设置点击之后的效果
                                  }
                            } );
                      }
                } );

    完毕

    理论上可以实现任意样式的下拉框

    可能存在的问题:

          设置img时使用了自定义的Application,传入context即可。

    Demo有空再放


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

    千次下载 热门讨论 2013-03-26 20:51:41
    androoid自定义下拉框,仿WEB风格
  • android使用PopUpWindow自定义下拉框
  • android自定义下拉框

    2018-05-26 13:27:14
    android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候
    原文地址为:
    android中自定义下拉框
    

    android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在编辑框的下面,然后又很多选项的下拉框,可是我在网上找了一下,没有这种下拉框额,就自己写了一个,看效果图先:

    ,这个是资料填写的一部分界面,三个下拉框,选择故乡所在地;


    点击之后弹出下拉框,选择下面的选项;

    三个下拉框时关联的,第一个决定了第二数据内容,第二个决定了第三个数据内容,如果三个全部选好之后,再次点击第一个,那么第二个、第三个都会清空,点击第二个则第三个会清空。





    要实现它,也就是一个PopupWindow时主要的界面,下面来看看代码:

    创建一个DefineSpinnerView.java文件,继承至View,然后给出如下属性:

        /**
         * 用于弹出的下拉框
         */
        private PopupWindow pWindow = null;
    
        // **************************************************************************
        // 这些是用来当点击一个时,根据他们之间的关系来显示下拉框中的内容
        // **************************************************************************
        /**
         * 祖父
         */
        private DefineSpinnerView gradeParent = null;
        /**
         * 父控件
         */
        private DefineSpinnerView parents = null;
        /**
         * 子控件
         */
        private DefineSpinnerView child1 = null;
        /**
         * 孙子控件
         */
        private DefineSpinnerView child2 = null;
    
        private Context context = null;
        private OptionsAdapter adapter = null; // 下拉框适配器
        private List<String> datas = null; // 下拉框数据
        private RelativeLayout layout = null; // 父控件
        private TextView text = null; // 文本显示
        private ImageView image = null; // 下拉箭头
        private int p_width = -1; // 下拉框宽度
        private ListView list = null; // 下拉表

    在构造函数中,构造出一个TextView和一个ImageView控件,并将它们都添加到layout中,代码如下:

    TextListener lis = new TextListener();
            text = new TextView(context);
            text.setBackgroundResource(R.drawable.edit_normal);
            text.setTextColor(getResources().getColor(R.color.spinner_text));
            text.setGravity(Gravity.CENTER);
            text.setOnClickListener(lis);
            LayoutParams params1 = new LayoutParams(width, hight);
            params1.leftMargin = left;
            params1.topMargin = top;
    
            image = new ImageView(context);
            image.setBackgroundResource(R.drawable.gerendang_jiantou);
            image.setOnClickListener(lis);
            if (LoginAct.MACHINE_PIXELS == IFinalConstant.XHDPI_RESOLUTION) {
                text.setTextSize(20.0f);
                LayoutParams params2 = new LayoutParams(19, 17);
                params2.topMargin = top + 15;
                params2.leftMargin = left + width - 28;
                map.put(image, params2);
            } else {
                text.setTextSize(15.0f);
                LayoutParams params2 = new LayoutParams(8, 8);
                params2.topMargin = top + 13;
                params2.leftMargin = left + width - 16;
                map.put(image, params2);
            }
    
            map.put(text, params1);

    里面涉及到一个TextListener内部类,是我们自己定义的一个类,它继承至OnClickListener接口

        /**
         * @author ZYJ
         *         当点击Text时,根据上一级的内容来设置下一级的内容
         */
        class TextListener implements OnClickListener {
            public void onClick(View v) {
            	hideSoft ();
                if (gradeParent != null && parents != null) {
                    DefineSpinnerView.this.setDatas(DefineSpinnerView.this
                            .getGuxiang3(gradeParent.getText(), parents.getText()));
                }
                if (gradeParent == null && parents != null) {
                    DefineSpinnerView.this.setDatas(DefineSpinnerView.this
                            .getGuxiang2(parents.getText()));
                }
                cleanText();
                changPopState(text);
            }
        

    这个里面调用了一个方法changPopState,它的定义如下:

        /**
         * 显示或者隐藏下拉框
         *
         * @param v
         */
        private void changPopState(View v) {
            if (pWindow == null) {
                popWindow(v);
                return;
            }
            if (!pWindow.isShowing()) {
                popWindow(v);
            } else {
                if (pWindow != null) {
                    pWindow.dismiss();
                }
            }
        }

    这个里面又调用了一个popWindow方法,定义如下:

    /**
         * 初始化下拉框
         *
         * @param par 父控件
         */
        private void popWindow(final View par) {
            if (pWindow == null) {
    
                // 布局文件
                View v = LayoutInflater.from(context).inflate(R.layout.list, null);
                list = (ListView) v.findViewById(R.id.list);
                list.setOnItemClickListener(new OnItemClickListener() {
                    public void onItemClick(AdapterView<?> arg0, View arg1,
                                            int arg2, long arg3) {
                        // R.String.butian代表的是“不填”
                        if (datas.get(arg2).toString().equals(context.getString(R.string.butian))) {  
                            text.setText("");
                        } else {
                            text.setText(datas.get(arg2).toString()); // 将当前点击的item中的字符串显示出来
                        }
                        if (pWindow != null) { // 关闭下拉框
                            changPopState(par);
                        }
                    }
                });
                adapter = new OptionsAdapter(context, datas); // 根据数据,设置下拉框显示
                list.setAdapter(adapter);
                list.setDivider(null); // 屏蔽下拉框每个item之间的线条
                /**
                 * 两种不同长度的下拉框,主要是为了适应屏幕的大小
                 */
                if (p_width > 0) {
                    pWindow = new PopupWindow(v, par.getWidth(), 150);
                } else {
                    pWindow = new PopupWindow(v, par.getWidth(), 300);
                }
                pWindow.setFocusable(true);
                pWindow.setBackgroundDrawable(new BitmapDrawable());
                pWindow.setOutsideTouchable(true);
                pWindow.update();
            }
            pWindow.showAsDropDown(text);
        }


    然后是一些细节了,提供一个TextView设置上面文字和得到上面文字的方法,设置下拉框数据的方法setDatas,如下:

    public void setText(String str) {
            if (text != null) {
                text.setText(str);
            }
        }
    
        public void setDatas(List<String> datas) {
            this.datas = datas;
            if (adapter != null) {
                adapter.setDatas(datas);
                adapter.notifyDataSetInvalidated();
            }
        }
    
        public String getText() {
            if (text != null) {
                return text.getText().toString();
            }
            LoginAct.LogW("spinner's textView is null");
            return "";
        }
    
        private void cleanText() {
            if (child1 != null) {
                child1.text.setText("");
            }
            if (child2 != null) {
                child2.text.setText("");
            }
        }

    然后添加几个关联控件的get方法:

     public void setChild1(DefineSpinnerView child1) {
            this.child1 = child1;
        }
    
        public void setChild2(DefineSpinnerView child2) {
            this.child2 = child2;
        }
    
        public void setGradeParent(DefineSpinnerView gradeParent) {
            this.gradeParent = gradeParent;
        }
    
        public void setParents(DefineSpinnerView parents) {
            this.parents = parents;
        }
    
        public void setP_width(int p_width) {
            this.p_width = p_width;
        }

    接下来提供一个设置子控件和算子控件数据的方法:

    /**
         * @param s1 父控件中的字符串
         * @param s2 子控件中的字符串
         * @return 返回一个List<String>集合
         * @功能 通过父控件的字符串来设置子控件中的内容
         */
        private List<String> getGuxiang3(String s1, String s2) {
            List<String> dd = new ArrayList<String>();
            dd.add(context.getString(R.string.butian));
            Map<String, ArrayList<String>> mapTmp1 = MaterialView.cityMap.get(s1);
            if (mapTmp1 != null) {
                List<String> list = mapTmp1.get(s2);
                if (list != null) {
                    for (String str : list) {
                        dd.add(str);
                    }
                }
            }
            return dd;
        }
    
        /**
         * @param s 字符串
         * @return
         * @author ZYJ
         * @功能 设置父亲辈的下拉框中的内容
         */
        private List<String> getGuxiang2(String s) {
            List<String> dd = new ArrayList<String>();
            dd.add(context.getString(R.string.butian));
            Map<String, ArrayList<String>> mapTmp = MaterialView.cityMap.get(s);
            if (mapTmp != null) {
                for (String str : mapTmp.keySet()) {
                    dd.add(str);
                }
            }
            return dd;
        }

    最后提供一个隐藏软键盘的方法:

        private void hideSoft() {
    		InputMethodManager imm = (InputMethodManager) context
    				.getSystemService(Context.INPUT_METHOD_SERVICE);
    		imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,
    				InputMethodManager.HIDE_NOT_ALWAYS);
    	}

    到这里,自定义控件的代码基本上写完了;我们还要来看看下拉框中的xml布局和适配器的写法:

    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="horizontal">
    
        <TextView
                android:id="@+id/info"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:textSize="15sp"
                android:textColor="@color/spinner_text"
                android:layout_gravity="center"
                android:gravity="center"/>
    
    </LinearLayout>


    然后是适配器类(OptionsAdapter),看全部代码吧:

    public class OptionsAdapter extends BaseAdapter {
    
        private Context context = null;
        private List<String> datas = null;
    
        public OptionsAdapter(Context context, List<String> d) {
            this.context = context;
            this.datas = d;
        }
    
        public int getCount() {
            return datas.size();
        }
    
        public Object getItem(int arg0) {
            return datas.get(arg0);
        }
    
        public long getItemId(int arg0) {
            return arg0;
        }
    
        /**
         * @author ZYJ
         * @功能 一个简单TextView显示
         */
        public View getView(int arg0, View arg1, ViewGroup arg2) {
            View view = LayoutInflater.from(context).inflate(R.layout.childlist,
                    null);
            TextView textStr = (TextView) view.findViewById(R.id.info);
            textStr.setText("\t" + getItem(arg0).toString());
            return view;
        }
    
        public void setDatas(List<String> datas) {
            this.datas = datas;
        }
    
    }


    这样,上面的功能基本上都实现了,我的这个控件在我项目中是手动添加上去的,而不是定义在xml文件中的,所以也不知道定义在xml文件中能不能生效,各位尽管试试吧。









    转载请注明本文地址: android中自定义下拉框
    展开全文
  • android Spinner自定义下拉框

    千次阅读 2016-12-29 15:59:46
    Spinner下拉框android中有2种绑定方式 1.通过在string.xml中配置 array 的item 去实现(缺点:下拉框中的内容是写死的) 北京 上海 广州 深圳 在布局文件中引用后可以看到效果 android:id="@+id/tab1_...

    Spinner下拉框在android中有2种绑定方式

    1.通过在string.xml中配置 array 的item 去实现(缺点:下拉框中的内容是写死的)

    <array name="city">
            <item>北京</item>
            <item>上海</item>
            <item>广州</item>
            <item>深圳</item>
        </array>
    在布局文件中引用后可以看到效果

    <Spinner
            android:id="@+id/tab1_fragemt_spinner1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:entries="@array/city">
        </Spinner>

    2.自定义数据源,获取网络数据显示到下拉框中

    a.新增一个布局文件 spinner_custom_item.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">
        <TextView
            android:id="@+id/spinner_custom_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="10dip"
            android:paddingTop="10dip"
            android:paddingRight="10dip"
            android:text="TextView"
            android:textColor="#444444"
            android:textSize="20sp" />
    </LinearLayout>
    
    b.自定义一个适配器类

    /**
         * 自定义适配器类
         * @author jiangqq  <a href=http://blog.csdn.net/jiangqq781931404></a>
         *
         */
        public class MyAdapter extends BaseAdapter {
            private List<String> mList; //List 中的 String  可以是对象,随意组合,此处演示用的是 Stirng 
            private Context mContext;
    
            public MyAdapter(Context pContext, List<String> pList) {
                this.mContext = pContext;
                this.mList = pList;
            }
    
            @Override
            public int getCount() {
                return mList.size();
            }
    
            @Override
            public Object getItem(int position) {
                return mList.get(position);
            }
    
            @Override
            public long getItemId(int position) {
                return position;
            }
            /**
             * 下面是重要代码
             */
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                LayoutInflater _LayoutInflater=LayoutInflater.from(mContext);
                convertView=_LayoutInflater.inflate(R.layout.spinner_custom_item, null);
                if(convertView!=null)
                {
                    TextView _TextView1=(TextView)convertView.findViewById(R.id.spinner_custom_textView);
                    _TextView1.setText(mList.get(position));
                }
                return convertView;
            }
        }

    c.在activity方法中把数据放到适配器中就可以看到效果

    Spinner spinner = (Spinner) findViewById(R.id.tab1_fragemt_spinner2);
    List<String> items = new ArrayList<String>();
    items.add("管理员");
    items.add("会员");
    items.add("游客");
    MyAdapter adapter = new MyAdapter(context,items);
    spinner.setAdapter(adapter);

    下拉框显示的样式可以自己调整,好处多多



    展开全文
  • Android开发自定义下拉框下拉列表

    千次阅读 2017-05-08 11:06:47
    自定义下拉满足需求,下拉选择框
  • Android自定义spinner下拉框实现的实现 http://blog.csdn.net/jdsjlzx/article/details/41316417 请支持原创:http://blog.csdn.net/geniuseoe2012/article/details/8723702
  • android自定义spinner下拉框

    千次阅读 2019-03-22 19:36:51
    看了许多,还是这个最好用,可以随心定制各个页面展示 Android 自定义spinner下拉框实现
  • android自带的下拉框好用不?我觉得有时候好用,有时候难有,项目规定这样的效果,自带的控件实现不了,那么只有我们自己来老老实实滴写一个新的了,其实最基本的下拉框就像一些资料填写时,点击的时候出现在编辑框...
  • autojs自定义下拉框

    2021-06-19 12:50:12
    自定义下拉框spinner 效果展示 git动图较大, 稍等片刻, 马上就好 autojs版本 8.8.12-0 萌新三连问 我要改背景 我要改字体颜色 我改了下拉框数据, 怎么颜色又变回去啦 疑问解答 spinner布局有两种 未展开之前的...
  • Android自定义spinner下拉框实现的实现
  • 【实例简介】博文参考:http://blog.csdn.net/geniuseoe2012/article/details/8723702android仿web风格的spinner下拉框实现demo,实现更通用【实例截图】【核心代码】618f4a12-340d-4612-8530-43e12afd0570└── ...
  • Android 自定义 可编辑 下拉框 已优化代码和界面
  • android自定义spinner下拉框实现(封装更通用)

    千次下载 热门讨论 2013-05-20 10:39:02
    博文参考:http://blog.csdn.net/geniuseoe2012/article/details/8723702 android仿web风格的spinner下拉框实现demo,实现更通用
  • 一:前言本人参考博客:http://blog.csdn.net/jdsjlzx/article/details/41316417 最近在弄一个下拉框,发现Android自带的很难实现我的功能,于是去网上找到一份Demo,但是发现没有封装的好,并且还有很多重复的代码,于是我...
  • 说到Android下拉框spineer,框架中虽有现成的控件,但实际效果可能并不是我们所需要的那种,如下图: 其实我们更需要的是像WEB那种风格,如图所示: 其实实现也很简单,就是自定义个popwindow就可以了 下面贴...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,697
精华内容 1,078
关键字:

android自定义下拉框