首页 文章

如何创建下拉列表?

提问于
浏览
148

如何创建下拉列表?我尝试过ScrollView,但这并不是我需要的 .

8 回答

  • 41

    最好的方法是:

    Preview:

    enter image description here

    XML:

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/btn_dropdown"
        android:spinnerMode="dropdown"/>
    

    Java:

    //get the spinner from the xml.
    Spinner dropdown = findViewById(R.id.spinner1);
    //create a list of items for the spinner.
    String[] items = new String[]{"1", "2", "three"};
    //create an adapter to describe how the items are displayed, adapters are used in several places in android.
    //There are multiple variations of this, but this is the basic variant.
    ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items);
    //set the spinners adapter to the previously created one.
    dropdown.setAdapter(adapter);
    

    More information:

    这是基础知识,但还有更多可以通过实验自学 .

    https://developer.android.com/guide/topics/ui/controls/spinner.html

  • 231

    Spinner xml:

    <Spinner
          android:id="@+id/spinner"
          android:layout_width="wrap_content"
          android:layout_height="match_parent" />
    

    Java的:

    public class MainActivity extends Activity implements OnItemSelectedListener{
    
        private Spinner spinner;
        private static final String[] paths = {"item 1", "item 2", "item 3"};
    
        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_layout);
    
            spinner = (Spinner)findViewById(R.id.spinner);
            ArrayAdapter<String>adapter = new ArrayAdapter<String>(MainActivity.this,
                    android.R.layout.simple_spinner_item,paths);
    
            adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinner.setAdapter(adapter);
            spinner.setOnItemSelectedListener(this);
    
        }
    
        public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    
            switch (position) {
                case 0:
                    // Whatever you want to happen when the first item gets selected
                    break;
                case 1:
                    // Whatever you want to happen when the second item gets selected
                    break;
                case 2:
                    // Whatever you want to happen when the thrid item gets selected
                    break;
    
            }
        }
    
    }
    
  • 9

    enter image description here

    这是它的代码 .

    activity_main.xml中

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <Spinner
        android:id="@+id/static_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:layout_marginTop="20dp" />
    
    <Spinner
        android:id="@+id/dynamic_spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />
    

    strings.xml中

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    <string name="app_name">Ahotbrew.com - Dropdown</string> 
    <string-array name="brew_array">
        <item>Cappuccino</item>
        <item>Espresso</item>
        <item>Mocha</item>
        <item>Caffè Americano</item>
        <item>Cafe Zorro</item>
    </string-array>
    

    主要活动

    Spinner staticSpinner = (Spinner) findViewById(R.id.static_spinner);
    
        // Create an ArrayAdapter using the string array and a default spinner
        ArrayAdapter<CharSequence> staticAdapter = ArrayAdapter
                .createFromResource(this, R.array.brew_array,
                        android.R.layout.simple_spinner_item);
    
        // Specify the layout to use when the list of choices appears
        staticAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    
        // Apply the adapter to the spinner
        staticSpinner.setAdapter(staticAdapter);
    
        Spinner dynamicSpinner = (Spinner) findViewById(R.id.dynamic_spinner);
    
        String[] items = new String[] { "Chai Latte", "Green Tea", "Black Tea" };
    
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, items);
    
        dynamicSpinner.setAdapter(adapter);
    
        dynamicSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                Log.v("item", (String) parent.getItemAtPosition(position));
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                // TODO Auto-generated method stub
            }
        });
    

    这个例子来自http://www.ahotbrew.com/android-dropdown-spinner-example/

  • 5

    你需要 Spinner . 这是一个例子:

    spinner_1 = (Spinner) findViewById(R.id.spinner1);
        spinner_1.setOnItemSelectedListener(this);
        List<String> list = new ArrayList<String>(); 
        list.add("RANJITH");
        list.add("ARUN");
        list.add("JEESMON");
        list.add("NISAM");
        list.add("SREEJITH");
        list.add("SANJAY");
        list.add("AKSHY");
        list.add("FIROZ");
        list.add("RAHUL");
        list.add("ARJUN");
        list.add("SAVIYO");
        list.add("VISHNU");
    
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner_1.setAdapter(adapter);
    
    
        spinner_2 = (Spinner) findViewById(R.id.spinner_two);
        spinner_2.setOnItemSelectedListener(this);
        List<String> city = new ArrayList<String>();
        city.add("KASARGOD");
        city.add("KANNUR");
        city.add("THRISSUR");
        city.add("KOZHIKODE");
        city.add("TRIVANDRUM");
        city.add("ERNAMKULLAM");
        city.add("WAYANAD");
        city.add("PALAKKAD");
        city.add("ALAPUZHA");
        city.add("IDUKKI");
        city.add("KOTTAYAM");
        city.add("PATHANAMTHITTA");
        city.add("KOLLAM");
        city.add("MALAPPURAM");
        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, city);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner_2.setAdapter(adapter2);
    
    
    
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
            long id) {
        // TODO Auto-generated method stub
        Toast.makeText(this, "YOUR SELECTION IS : " + parent.getItemAtPosition(position).toString(), Toast.LENGTH_SHORT).show();
    
    
    }
    
    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // TODO Auto-generated method stub
    
    }
    
  • 0

    这段代码对我来说很好,希望它对你也有帮助 .

    item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="1dip" >
        <TextView
            android:id="@+id/spinnerItem"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="2dp"
            android:textSize="12sp" >
        </TextView>
    </RelativeLayout>
    

    details.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_marginBottom="20dp"
            android:background="#FF00FF">   
        <Spinner
                android:id="@+id/dropStatus"
                android:layout_width="250dp"
                android:layout_height="30dp"
                android:layout_marginBottom="7dp"
                android:drawSelectorOnTop="true"/> 
    </LinearLayout>
    

    适配器类:

    import java.util.ArrayList;
    
    import android.content.Context;
    import android.content.res.Resources;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.TextView;
    
    public class StatusAdapter extends ArrayAdapter<StatusBean> {
    
        private Context context;
        private ArrayList<StatusBean> statuses;
        public Resources res;
        StatusBean currRowVal = null;
        LayoutInflater inflater;
    
        public StatusAdapter(Context context,
                int textViewResourceId, ArrayList<StatusBean> statuses,
                Resources resLocal) {
            super(context, textViewResourceId, statuses);
            this.context = context;
            this.statuses = statuses;
            this.res = resLocal;        
            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            return getCustomView(position, convertView, parent);
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            return getCustomView(position, convertView, parent);
        }
    
        public View getCustomView(int position, View convertView, ViewGroup parent) {
            View row = inflater.inflate(R.layout.status_item, parent, false);
            currRowVal = null;
            currRowVal = (StatusBean) statuses.get(position);
            TextView label = (TextView) row.findViewById(R.id.spinnerItem);
            if (position == 0) {
                label.setText("Please select status");
            } else {
                label.setText(currRowVal.getStatus());
            }
    
            return row;
        }
    }
    

    StatusBean类:

    public class StatusBean {
    
        private String status;
        private String statusCode;
    
        public StatusBean() {
        }
    
        public StatusBean(String status,
                String statusCode) {
            this.status = status;
            this.statusCode = statusCode;
        }
    
        public String getStatus() {
            return status;
        }
    
        public void setStatus(String status) {
            this.status =  status;
        }
    
        public String getStatusCode() {
            return statusCode;
        }
    
        public void setStatusCode(String statusCode) {
            this.statusCode = statusCode;
        }
    }
    

    活动类:

    在onCreate方法中:

    static ArrayList<StatusBean> STATUS_LIST = new ArrayList<StatusBean>();
    
    for(int i=0;i<=10;i++) {
    STATUS_LIST.add(new StatusBean(“Status ”+i, “Stattus ”+i));
    }
    
    final Spinner  dropStatus = (Spinner)findViewById(R.id.dropStatus);
                Resources res = getResources(); 
                StatusAdapter adapter = new StatusAdapter(this, R.layout.item, SessionData. STATUS_LIST, res);
                dropStatus.setAdapter(adapter);
    
  • 7

    您还可以使用AppCompatSpinner小部件:

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/spinner_order_type"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:backgroundTint="@color/red"/>
    

    在Activity类中:

    AppCompatSpinner spinOrderType = (AppCompatSpinner) findViewById(R.id.spinner_order_type);
    List<String> categories = new ArrayList<String>();
            categories.add(getString(R.string.label_table_order));
            categories.add(getString(R.string.label_take_away));
    
            ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(mContext,
                    R.layout.layout_spinner_item, categories);
            dataAdapter.setDropDownViewResource(R.layout.layout_spinner_item);
            spinOrderType.setAdapter(dataAdapter);
            spinOrderType.setSelection(0);
    
            spinOrderType.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long l) {
                    String item = parent.getItemAtPosition(position).toString();
                    Log.d(TAG, item);
                }
    
                @Override
                public void onNothingSelected(AdapterView<?> adapterView) {
    
                }
            });
    

    layout_spinner_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        xmlns:tools="http://schemas.android.com/tools"
        android:gravity="left"
        android:textSize="@dimen/text.size.large"
        android:textColor="@color/text.link"
        android:padding="@dimen/margin.3" />
    
  • 2

    试试这个...

    <string-array name="names">
    
            <item></item>
            <item>By Bus</item>
            <item>By Train</item>
            <item>By Van</item>
            <item>By Bike</item>
        </string-array>
    
    
    String travel_type;
    
    
    ArrayAdapter<String> myAdapter = new ArrayAdapter(AddNew_Trip.this,android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.names)); 
            myAdapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); 
            mySpinner.setAdapter(myAdapter); 
    
            mySpinner.setOnItemSelectedListener( 
                    new AdapterView.OnItemSelectedListener() { 
    
                        @Override 
                        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) { 
                            travel_type = String.valueOf(adapterView.getItemAtPosition(i)); 
                            //Toast.makeText(Plan_Trip.this, travel_type, Toast.LENGTH_SHORT).show(); 
                        } 
    
                        @Override 
                        public void onNothingSelected(AdapterView<?> adapterView) { 
    
                        } 
    
                    } 
            ); 
        }
    
  • 74

    下拉菜单在Android中称为微调器 . 最佳指南是 -

    http://developer.android.com/guide/topics/ui/controls/spinner.html

相关问题