效果图
1,依赖implementation 'com.wx.wheelview:wheelview:1.3.3'
2,在xml创建pulo_dosig_popup
<?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="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/pu"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="53dp">
<TextView
android:id="@+id/popup_close"
android:layout_width="49dp"
android:layout_height="49dp"
android:layout_marginLeft="16dp"
android:gravity="center"
android:scaleType="center"
android:text="取消"
android:textColor="@color/gray_six" />
<TextView
android:id="@+id/text_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="剂量"
android:textColor="@color/gray_six"
android:textSize="16sp" />
<TextView
android:id="@+id/popup_define"
android:layout_width="49dp"
android:layout_height="49dp"
android:scaleType="center"
android:textColor="@color/gray_six"
android:layout_marginRight="16dp"
android:layout_alignParentRight="true"
android:gravity="center"
android:text="确定" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/log_bg"
></View>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="262dp"
android:weightSum="2"
android:gravity="center"
>
<EditText
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_weight="1"
android:background="@drawable/ic_edit"
android:hint="请输入数量"
android:paddingLeft="10dp"
android:textColor="@color/gray_six"
android:textColorHint="@color/gray_e"></EditText>
<ListView
android:visibility="gone"
android:layout_weight="1"
android:id="@+id/list_time"
android:layout_width="match_parent"
android:layout_height="262dp"
android:layout_marginRight="16dp"
android:listSelector="@android:color/transparent"
android:divider="#00000000"
android:dividerHeight="4dp" />
<com.wx.wheelview.widget.WheelView
android:id="@+id/wheelview"
android:layout_weight="1"
android:layout_marginRight="16dp"
android:background="@color/white"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
</LinearLayout>
3,实现bottomBankTypeWindow方法中引用
private PopupWindow mPopupWindow;
void bottomBankTypeWindow(View view) {
if (mPopupWindow != null && mPopupWindow.isShowing()) {
return;
}
LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.pulo_dosig_popup, null);
initTypeListView(layout);
mPopupWindow = new PopupWindow(layout,
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
//背景透明度渐变
setBackgroundAlpha(0.5f);
mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
setBackgroundAlpha(1.0f);
}
});
//点击空白处时,隐藏掉pop窗口
mPopupWindow.setFocusable(true);
//添加弹出、弹入的动画
mPopupWindow.setAnimationStyle(R.style.PopupWindow);
int[] location = new int[2];
view.getLocationOnScreen(location);
mPopupWindow.showAtLocation(view, Gravity.START | Gravity.BOTTOM, 0, -location[1]);
//添加按键事件监听
setButtonListeners(layout);
}
4,创建initTypeListView方法
private void initTypeListView(View layout) {
//绑定数据
final List<String> lists=new ArrayList<>();
for ( int i = 0;i<10;i++){
lists.add("999感冒"+i);
}
// 创建WheelView
WheelView wheelView=layout.findViewById(R.id.wheelview);
MyWheelAdapter adapter=new MyWheelAdapter(this);
wheelView.setSkin(WheelView.Skin.None); // common皮肤
// 设置数据集合
wheelView.setWheelData(lists);
wheelView.setWheelAdapter(adapter);
wheelView.setOnWheelItemSelectedListener(new WheelView.OnWheelItemSelectedListener() {
@Override
public void onItemSelected(int position, Object o) {
Log.i("categoryName====",position+"");
//记录选中item的position
adapter.setSelectItem(position);
adapter.notifyDataSetChanged();
}
});
}
5,mPopupWindow关闭
private void dismissPopup() {
if (mPopupWindow != null && mPopupWindow.isShowing()) {
mPopupWindow.dismiss();
}
}
6,创建setButtonListeners取消事件
private void setButtonListeners(LinearLayout layout) {
TextView mImgClose = layout.findViewById(R.id.popup_close);
mImgClose.setOnClickListener(this);
}
7,创建MyWheelAdapter类
public class MyWheelAdapter extends BaseWheelAdapter<String> {
private Context mContext;
//标记
public int selPos=-1;
public MyWheelAdapter(Context context) {
mContext = context;
}
//标记选中的item
public void setSelectItem(int selPos){
this.selPos=selPos;
}
@Override
protected View bindView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext).inflate(R.layout.item_view_gv, null);
viewHolder.layoutView = (LinearLayout) convertView.findViewById(R.id.layout_view);
viewHolder.textView = (TextView) convertView.findViewById(R.id.item_name);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.textView.setText(mList.get(position));
//设置选中item的背景,drawable中创建 R.drawable.gc_item
if(selPos==position){
viewHolder.layoutView.setBackgroundResource(R.drawable.gc_item);
}else {
viewHolder.layoutView.setBackgroundResource(R.drawable.wc_item);
}
return convertView;
}
static class ViewHolder {
TextView textView;
LinearLayout layoutView;
}
}
8,在drawable创建R.drawable.gc_item样式
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"
>
<solid android:color="#E5E5E5" />
<corners android:radius="8dp" />
</shape>
9,创建在xml 中R.layout.item_view_gv
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/layout_view"
android:layout_width="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:layout_height="wrap_content"
>
<TextView
android:id="@+id/item_name"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:text="2020/1"
android:gravity="center"
android:background="@null"
android:textColor="@color/gray_six"/>
</LinearLayout>