使用 ListPopupWindow 使 Edit 控件拥有下拉列表

使用 ListPopupWindow 使 Edit 控件拥有下拉列表

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
// 比较重要的几个import,使用Alt+回车不太容易导入 
import android.widget.ListPopupWindow;
import android.view.ViewGroup.LayoutParams;
import android.view.Gravity;
import android.os.Build;


public class MainActivity extends AppCompatActivity {

    private ListPopupWindow mPopup;
    private String[] mGoodArray={"pencil", "potato", "peanut", "carrot", "cabbage", "cat"};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final EditText usernameEt = (EditText) findViewById(R.id.main_usernameEt);
        usernameEt.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                // 点击 edit 控件时弹出列表
                if (Build.VERSION.SDK_INT >=  Build.VERSION_CODES.KITKAT) {
                    mPopup.setDropDownGravity(Gravity.END);
                }
                mPopup.setAnchorView(v);
                mPopup.show();
            }
        });
        
        // 创建 ListPopupWindow
        mPopup = new ListPopupWindow(this);
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, mGoodArray);
        mPopup.setAdapter(adapter);
        mPopup.setWidth(LayoutParams.WRAP_CONTENT);
        mPopup.setHeight(LayoutParams.WRAP_CONTENT);
        mPopup.setModal(true);
        mPopup.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                // 单击列表项时的反应
                usernameEt.setText(mGoodArray[position]);
                usernameEt.setSelection(usernameEt.getText().length());
                mPopup.dismiss();
            }
        });
    }
}
posted @ 2021-12-01 18:56  汉学  阅读(58)  评论(0)    收藏  举报