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

首頁 > 系統(tǒng) > Android > 正文

Android仿泡泡窗實現(xiàn)下拉菜單條實例代碼

2019-10-23 18:29:36
字體:
來源:轉載
供稿:網(wǎng)友

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

注意:泡泡窗默認是沒有焦點的。要讓泡泡窗獲取到焦點。假如listview的item中有Button,ImageButton,CheckBox等會強制獲取焦點的view 此時,listview的item無法獲取焦點,從而無法被點擊 解決方法:給item的根布局增加以下屬性 Android:descendantFocusability="blocksDescendants"設置之后,Button獲取焦點,item中其他控件也可以獲取焦點,如果文本的文字過多,會被后面的圖標蓋住,首先設置單行android/55993.html">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);   }   //集合中添加數(shù)據(jù)   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();       }     });   }   //泡泡窗實現(xiàn)點擊顯示列表,泡泡窗默認是不獲取焦點的   private void showNumberList(){     if(popupWindow == null){     //泡泡窗的填充,設置寬高     popupWindow = new PopupWindow(listView, et.getWidth(), 300);     }     //讓泡泡窗額度條目獲取到焦點     popupWindow.setFocusable(true);     //設置背景圖     popupWindow.setBackgroundDrawable(new BitmapDrawable());     popupWindow.setOutsideTouchable(true);     //第一個參數(shù)是依附哪一個參數(shù)下,x軸,y軸的偏移量,相對于第一個參數(shù)的左下角的位置     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();           //根據(jù)當前條目的個數(shù)設置,當前條目的高度           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仿泡泡窗實現(xiàn)下拉菜單條實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VEVB武林網(wǎng)網(wǎng)站的支持!


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 黑河市| 天柱县| 河南省| 商河县| 泾川县| 漳平市| 乌兰浩特市| 蓬溪县| 开平市| 高雄市| 昌平区| 丰镇市| 绩溪县| 萝北县| 新乐市| 河池市| 广宗县| 红原县| 明光市| 山西省| 开平市| 邢台市| 耿马| 定安县| 阿勒泰市| 商丘市| 砚山县| 易门县| 崇礼县| 秀山| 徐州市| 枣庄市| 遂昌县| 丽江市| 宁波市| 米脂县| 维西| 滦南县| 襄汾县| 铁力市| 宜兰市|