创建一个popwindow 并动态设置pop的高度 限定pop高度

来源:互联网 发布:淘宝口碑网 编辑:程序博客网 时间:2024/05/16 20:28

创建一个popwindow 并动态设置pop的高度 限定pop高度

这里举个例子,pop里面放的是一个listview

直接上代码

SelectMedicalCasePopwindow。java

public class SelectMedicalCasePopwindow extends PopupWindow implements OnClickListener, AdapterView.OnItemClickListener {   private TextView tv;   private View mMenuView;   private Context context;   private Handler callback;   private ListView mMyListView;   private String[] items;   private Button mButton;   private ChatHistoryAdapter mAdapter;   public SelectMedicalCasePopwindow(Activity con, List<String> itemList) {      this(con, itemList.toArray(new String[itemList.size()]));   }   public SelectMedicalCasePopwindow(Activity con, String[] items) {      super(con);      this.context = con;      this.items = items;      int scrheight = DensityUtil.getScreenHeight(context)  / 2;      LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);      mMenuView = inflater.inflate(R.layout.select_medical_case_pop, null);      mAdapter = new ChatHistoryAdapter();      mMyListView = (ListView) mMenuView.findViewById(R.id.bithday_layout);      View listItem = mAdapter.getView(0, null, mMyListView);      listItem.measure(0, 0);      int relheight = listItem.getMeasuredHeight();      UtilsLog.d(scrheight);      UtilsLog.d(relheight);      this.setContentView(mMenuView);      this.setWidth(LayoutParams.MATCH_PARENT);      if(relheight * items.length > scrheight){         LayoutParams layoutParams = mMyListView.getLayoutParams();         layoutParams.width = LayoutParams.MATCH_PARENT;         layoutParams.height = scrheight;         mMyListView.setLayoutParams(layoutParams);         //this.setHeight(scrheight);      } else {      }      this.setHeight(LayoutParams.WRAP_CONTENT);      // 设置SelectPicPopupWindow弹出窗体可点击      this.setFocusable(true);      // 设置SelectPicPopupWindow弹出窗体动画效果      this.setAnimationStyle(R.style.AnimBottom);      // 实例化一个ColorDrawable颜色为半透明      ColorDrawable dw = new ColorDrawable(0xb0000000);      // 设置SelectPicPopupWindow弹出窗体的背景      this.setBackgroundDrawable(dw);      // mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框      mMenuView.setOnTouchListener(new View.OnTouchListener() {         public boolean onTouch(View v, MotionEvent event) {            int height = mMenuView.findViewById(R.id.bithday_layout_lin).getTop();            int y = (int) event.getY();            if (event.getAction() == MotionEvent.ACTION_UP) {               if (y < height) {                  dismiss();               }            }            return true;         }      });      mButton = (Button) mMenuView.findViewById(R.id.btn_cancel);      mButton.setOnClickListener(this);      mMyListView.setAdapter(mAdapter);      mMyListView.setOnItemClickListener(this);      this.update();   }   @Override   public void showAtLocation(View parent, int gravity, int x, int y) {      super.showAtLocation(parent, gravity, x, y);      this.tv = (TextView) parent;   }   public void showAtLocationNoSetText(View parent, int gravity, int x, int y, Handler callback) {      super.showAtLocation(parent, gravity, x, y);      this.callback = callback;   }   @Override   public void onClick(View v) {      switch (v.getId()) {         case R.id.btn_cancel:            this.dismiss();            if (callback != null) {               callback.sendEmptyMessage(0);            }            break;      }   }   @Override   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {      if (callback != null) {         Message msg = callback.obtainMessage(1, position, 0);         callback.sendMessage(msg);      }      dismiss();   }   class ChatHistoryAdapter extends BaseAdapter {      @Override      public int getCount() {         return items.length;      }      @Override      public Object getItem(int position) {         return null;      }      @Override      public long getItemId(int position) {         return position;      }      @Override      public View getView(int position, View convertView, ViewGroup parent) {         ChatHistoryHolder holder;         if (convertView == null) {            holder = new ChatHistoryHolder();            convertView = View.inflate(context, R.layout.view_chat_select_case_item, null);            holder.clnic_doctor_item_time_tv = (TextView) convertView.findViewById(R.id.btn_myquestion_first);            convertView.setTag(holder);         } else {            holder = (ChatHistoryHolder) convertView.getTag();         }         holder.clnic_doctor_item_time_tv.setText(items[position]);         return convertView;      }      class ChatHistoryHolder {         TextView clnic_doctor_item_time_tv;      }   }}


select_medical_case_pop.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center_horizontal">    <RelativeLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_above="@+id/bithday_layout_lin"        android:background="@color/white">        <TextView            android:id="@+id/choose_txt"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:padding="13dip"            android:text="选择病例"            android:gravity="center"            android:layout_centerInParent="true"            android:textColor="@color/text_color_959595"            android:textSize="@dimen/text_size_22px" />        <View            android:layout_width="match_parent"            android:layout_height="0.5dip"            android:layout_below="@+id/choose_txt"            android:background="@color/text_color_cccccc" />    </RelativeLayout>    <LinearLayout        android:id="@+id/bithday_layout_lin"        android:layout_width="match_parent"        android:layout_above="@+id/bithday_layout1"        android:background="@color/white"        android:layout_height="wrap_content">        <ListView            android:id="@+id/bithday_layout"            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:background="@color/white"            android:divider="@color/text_color_cccccc"            android:dividerHeight="0.1dp" />    </LinearLayout>    <View        android:id="@+id/bithday_layout1"        android:layout_width="match_parent"        android:layout_height="10dip"        android:layout_above="@+id/layout_cancel"        android:background="#f2f5f7" />    <LinearLayout        android:id="@+id/layout_cancel"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:layout_alignParentLeft="true"        android:background="@color/white"        android:gravity="center"        android:orientation="horizontal">        <Button            android:id="@+id/btn_cancel"            android:layout_width="match_parent"            android:layout_height="@dimen/height50"            android:background="@drawable/freeclinics_btn_click_bg"            android:gravity="center"            android:text="取 消"            android:textColor="@color/content"            android:textSize="@dimen/text_size_20px" />    </LinearLayout></RelativeLayout>


view_chat_select_case_item.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="55dip"    android:background="@drawable/freeclinics_btn_click_bg">    <TextView        android:id="@+id/btn_myquestion_first"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:background="@drawable/freeclinics_btn_click_bg"        android:gravity="center"        android:padding="13dip"        android:text="男"        android:textColor="@color/content"        android:textSize="@dimen/text_size_22px" /></LinearLayout>







0 0
原创粉丝点击