国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android仿泡泡窗實現下拉菜單條實例代碼

2019-12-12 02:56:56
字體:
來源:轉載
供稿:網友

功能描述:點擊下拉按鈕,顯示出所有的條目,有刪除和點擊功能,點擊后將條目顯示。

注意:泡泡窗默認是沒有焦點的。要讓泡泡窗獲取到焦點。假如listview的item中有Button,ImageButton,CheckBox等會強制獲取焦點的view 此時,listview的item無法獲取焦點,從而無法被點擊 解決方法:給item的根布局增加以下屬性 Android:descendantFocusability="blocksDescendants"設置之后,Button獲取焦點,item中其他控件也可以獲取焦點,如果文本的文字過多,會被后面的圖標蓋住,首先設置單行android:singleLine="true"再設置右邊距就蓋不住android:padding="40dp"

需要添加下面三項

//讓泡泡窗額度條目獲取到焦點     popupWindow.setFocusable(true);     //設置背景圖     popupWindow.setBackgroundDrawable(new BitmapDrawable());     popupWindow.setOutsideTouchable(true); 

主布局文件activity_main.xml

<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"   android:background="#22000000"   tools:context=".MainActivity" >   <RelativeLayout      android:layout_marginTop="40dp"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_centerHorizontal="true"     >   <EditText     android:id="@+id/et"     android:singleLine="true"     android:padding="40dp"     android:layout_width="300dp"     android:layout_height="40dp"     />   <ImageView      android:layout_width="wrap_content"     android:layout_height="40dp"     android:id="@+id/iv_select"     android:layout_centerVertical="true"     android:background="@drawable/ic_launcher"     android:layout_alignRight="@id/et"     />   </RelativeLayout> </RelativeLayout> 

每一個條目的布局文件item_list.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:padding="5dp"   android:orientation="horizontal" >   <TextView      android:layout_width="0dp"     android:layout_height="wrap_content"     android:drawableLeft="@drawable/ic_launcher"     android:gravity="center_vertical"     android:drawablePadding="3dp"     android:text="123"     android:id="@+id/tv_number"     android:layout_weight="1"     />   <ImageView      android:id="@+id/iv_delete"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:background="@drawable/ic_launcher"     /> </LinearLayout> 

邏輯代碼MainActivity.java

package com.ldw.select; import java.util.ArrayList; import android.app.Activity; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.EditText; import android.widget.ImageView; import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener{   private ImageView iv_select;   private EditText et;   private ArrayList<String> list = new ArrayList<String>();   private TextView tv_number;   private ImageView iv_delete;   private ListView listView;   private PopupWindow popupWindow;   @Override   protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     initView();     initListener();      initData();   }   private void initView() {     setContentView(R.layout.activity_main);     iv_select = (ImageView) findViewById(R.id.iv_select);     et = (EditText) findViewById(R.id.et);   }   private void initListener() {     iv_select.setOnClickListener(this);   }   //集合中添加數據   private void initData() {     for(int i = 0; i< 20; i++){       list.add(1340000000 + i + "");     }     initListView();   }   //初始化列表   private void initListView(){     listView = new ListView(this);     //設置listView的背景圖     listView.setBackgroundResource(R.drawable.ic_launcher);     //讓listView的滾動條不可見     listView.setVerticalScrollBarEnabled(false);     MyAdapter adapter = new MyAdapter();     listView.setAdapter(adapter);     listView.setOnItemClickListener(new OnItemClickListener(){       @Override       public void onItemClick(AdapterView<?> parent, View view,           int position, long id) {         et.setText(list.get(position));         //關閉泡泡窗         popupWindow.dismiss();       }     });   }   //泡泡窗實現點擊顯示列表,泡泡窗默認是不獲取焦點的   private void showNumberList(){     if(popupWindow == null){     //泡泡窗的填充,設置寬高     popupWindow = new PopupWindow(listView, et.getWidth(), 300);     }     //讓泡泡窗額度條目獲取到焦點     popupWindow.setFocusable(true);     //設置背景圖     popupWindow.setBackgroundDrawable(new BitmapDrawable());     popupWindow.setOutsideTouchable(true);     //第一個參數是依附哪一個參數下,x軸,y軸的偏移量,相對于第一個參數的左下角的位置     popupWindow.showAsDropDown(et, 0, 0);   }   @Override   public void onClick(View v){     switch (v.getId()){       case R.id.iv_select:         //點擊彈出列表         showNumberList();         break;     }   }   //listView填充   class MyAdapter extends BaseAdapter{     @Override     public int getCount() {       return list.size();     }     @Override     public Object getItem(int position) {       return null;     }     @Override     public long getItemId(int position) {       return 0;     }     @Override     public View getView(final int position, View convertView, ViewGroup parent) {       final View view = View.inflate(MainActivity.this, R.layout.item_list, null);       tv_number = (TextView) view.findViewById(R.id.tv_number);       iv_delete = (ImageView) view.findViewById(R.id.iv_delete);       tv_number.setText(list.get(position));       //刪除按鍵       iv_delete.setOnClickListener(new OnClickListener(){         @Override         public void onClick(View v) {           //刪除條目           list.remove(position);           //更新頁面           notifyDataSetChanged();           //根據當前條目的個數設置,當前條目的高度           int listViewHeight = list.size() * view.getHeight();           if(listViewHeight > 300){             listViewHeight = 300;           }else{             listViewHeight = listViewHeight;           }           //更新泡泡窗的高度           popupWindow.update(et.getWidth(), listViewHeight);           //刪除完了,泡泡窗小消失           if(list.size() == 0){             popupWindow.dismiss();             //下拉條消失             iv_select.setVisibility(View.GONE);           }         }       });       return view;     }   } } 

以上所述是小編給大家介紹的Android仿泡泡窗實現下拉菜單條實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和静县| 沾益县| 咸丰县| 海伦市| 凤庆县| 桃江县| 开化县| 关岭| 通河县| 卫辉市| 泽库县| 通海县| 嵩明县| 富蕴县| 错那县| 龙山县| 盐城市| 丰镇市| 三江| 云霄县| 高台县| 开原市| 特克斯县| 额敏县| 龙泉市| 太康县| 德保县| 铜梁县| 武定县| 扶风县| 西畴县| 文成县| 蒲城县| 东阿县| 萍乡市| 六枝特区| 衡东县| 长武县| 溧水县| 恩平市| 报价|