溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

利用popupwindow生成帶有列表的對話框,并設(shè)置對話框列表的點擊事件

發(fā)布時間:2020-07-11 07:11:59 來源:網(wǎng)絡(luò) 閱讀:2244 作者:IT學(xué)無止境 欄目:移動開發(fā)

點擊某個View彈出popupwindow列表:

代碼:

private ArrayAdapter<String> adapter_huoMing;
private PopupWindow popupWindow;

    /**
     * 這里是popupwindow,用來顯示所有查詢出來的信息列表
     * 這里的View是調(diào)用的時候傳入界面中的一個View,popupwindow則顯示在此view的下方
     */
    private void showPopupWindow(View view) {

        // 一個自定義的布局,作為顯示的內(nèi)容
        View contentView = LayoutInflater.from(getApplicationContext())
                .inflate(R.layout.activity_popuwindow_huoming, null);
        // 設(shè)置按鈕的點擊事件
        ListView lv_popup = (ListView) contentView
                .findViewById(R.id.lv_popup_huoming);
        //這里R.layout.activity_changnzytd_item為列表中每一項的布局,R.id.tv_changnzytd
          為顯示數(shù)據(jù)的textview,huoMing為列表數(shù)據(jù)源
        adapter_huoMing = new ArrayAdapter<String>(getApplicationContext(),
                R.layout.activity_changnzytd_item, R.id.tv_changnzytd, huoMing);
        lv_popup.setAdapter(adapter_huoMing);
        lv_popup.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // 這里寫Item被點擊后的事件
                // Toast.makeText(getApplicationContext(), "1", 0).show();
                if (huoMing.length > 0) {
                    et_huoming.setText(huoMing[position]);
                    popupWindow.dismiss();
                }

            }

        });

        popupWindow = new PopupWindow(contentView, LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT, true);

        popupWindow.setTouchable(true);

        popupWindow.setTouchInterceptor(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                Log.i("mengdd", "onTouch : ");

                return false;
                // 這里如果返回true的話,touch事件將被攔截
                // 攔截后 PopupWindow的onTouchEvent不被調(diào)用,這樣點擊外部區(qū)域無法dismiss
            }
        });

        // 如果不設(shè)置PopupWindow的背景,無論是點擊外部區(qū)域還是Back鍵都無法dismiss彈框
        // 我覺得這里是API的一個bug
        popupWindow.setBackgroundDrawable(getResources().getDrawable(
                R.drawable.abc_btn_borderless_material));

        // 設(shè)置好參數(shù)之后再show
        popupWindow.showAsDropDown(view);

    }

activity_popuwindow_huoming://這個是要顯示在popupwindow中的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/lv_popup_huoming"
        android:layout_width="fill_parent"
        android:layout_height="250dp" >
    </ListView>

</LinearLayout>


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI