如图样式,popupWindow外部不可点击
popupWindow的界面代码
<?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="wrap_content"
android:background="@color/white"
android:orientation="vertical" >
<LinearLayout
android:cacheColorHint="@android:color/transparent"
android:id="@+id/liner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<TextView
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消"
android:textColor="@color/blue"
android:textSize="17sp"/>
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="灌溉模块"
android:textSize="17sp"/>
<TextView
android:id="@+id/btn_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="完成"
android:textColor="@color/blue"
android:textSize="17sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/liner"
android:orientation="horizontal">
<ListView
android:id="@+id/listView1"
android:layout_width="180dp"
android:layout_height="225dp"
android:background="#f5f5f5"
android:cacheColorHint="#f5f5f5"
android:divider="@null"
android:dividerHeight="1dp"
android:scrollbars="none" />
<View
android:visibility="gone"
android:id="@+id/line"
android:layout_width="1dp"
android:layout_height="225dp"
android:layout_toRightOf="@+id/listView1"
/>
<ListView
android:id="@+id/listView2"
android:layout_width="fill_parent"
android:layout_height="225dp"
android:layout_toRightOf="@+id/line"
android:layout_weight="2"
android:background="@color/white"
android:cacheColorHint="@android:color/transparent"
android:divider="@null"
android:dividerHeight="1dp"
android:scrollbars="none" />
</LinearLayout>
</RelativeLayout>
java代码
private List<String> mGroupList;
private List<String> mPrimaryList;
private List<String> mJuniorList;
private int selectIndex;//判断左边点击那个item
private int sIndex;//判断右边点击那个item
private int okIndex1;//记录左边点击那个item
private int okIndex2;//记录右边点击那个item
private void showGuangai(){
//为了解决弹出PopupWindow后外部的事件不会分发,既外部的界面不可以点击
frag.setClickable(true);
frag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
View view= LayoutInflater.from(getContext()).inflate(R.layout.view_popup_guangai,null,false);
TextView cancel=view.findViewById(R.id.btn_cancel);
TextView isOk=view.findViewById(R.id.btn_ok);
ListView listView1=view.findViewById(R.id.listView1);
ListView listView2=view.findViewById(R.id.listView2);
final ListAdapter listAdapter1=new ListAdapter(mGroupList);
final rightAdapter listAdapter2=new rightAdapter(mPrimaryList);
listView1.setAdapter(listAdapter1);
listView2.setAdapter(listAdapter2);
if(okIndex1==1){
listAdapter2.setDataList(mJuniorList);
listAdapter2.notifyDataSetChanged();
}
final PopupWindow popupWindow = new PopupWindow(view,
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT,
false
);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setOutsideTouchable(false);
popupWindow.setAnimationStyle(R.style.RightTopPopAnim);
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
frag.setClickable(false);
ScreenTools.lighton(getActivity());
}
});
listView1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
selectIndex=position;
listAdapter1.notifyDataSetChanged();
if(position==0){
listAdapter2.setDataList(mPrimaryList);
listAdapter2.notifyDataSetChanged();
}
if(position==1){
listAdapter2.setDataList(mJuniorList);
listAdapter2.notifyDataSetChanged();
}
}
});
listView2.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
sIndex=position;
listAdapter2.notifyDataSetChanged();
}
});
isOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pager.setCurrentItem(1);
okIndex1=selectIndex;
okIndex2=sIndex;
popupWindow.dismiss();
}
});
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectIndex=okIndex1;
sIndex=okIndex2;
popupWindow.dismiss();
}
});
ScreenTools.lightoff(getActivity());
popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 11);
}
private void initList(){
mGroupList = new ArrayList<String>();
mGroupList.add("A");
mGroupList.add("B");
mPrimaryList = new ArrayList<String>();
mPrimaryList.add("A1");
mPrimaryList.add("A2");
mJuniorList = new ArrayList<String>();
mJuniorList.add("B1");
mJuniorList.add("B2");
}
//左边listview的适配器
private class ListAdapter extends BaseAdapter{
private List<String> mList;
public ListAdapter(List<String> list){
this.mList=list;
}
public void setDataList(List<String> list){
this.mList = list;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ListViewHolder holder;
if(convertView==null){
holder=new ListViewHolder();
convertView=View.inflate(getContext(),R.layout.list_item,null);
holder.Text=convertView.findViewById(R.id.group_textView);
holder.backgroundView = convertView.findViewById(R.id.ll_main);
convertView.setTag(holder);
}else {
holder=(ListViewHolder)convertView.getTag();
}
holder.Text.setText(mList.get(position));
if(selectIndex==position){
holder.backgroundView.setBackgroundResource(R.color.white);
holder.Text.setSelected(true);
}else {
holder.backgroundView.setBackgroundResource(R.color.white1);
holder.Text.setSelected(false);
}
return convertView;
}
}
private static class ListViewHolder {
TextView Text;
View backgroundView;
}
//右边listview的适配器
private class rightAdapter extends BaseAdapter{
private List<String> mList;
public rightAdapter(List<String> list){
this.mList=list;
}
public void setDataList(List<String> list){
this.mList = list;
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
rightViewHolder holder;
if(convertView==null){
holder=new rightViewHolder();
convertView=View.inflate(getContext(),R.layout.list_item,null);
holder.text=convertView.findViewById(R.id.group_textView);
convertView.setTag(holder);
}else {
holder=(rightViewHolder)convertView.getTag();
}
holder.text.setText(mList.get(position));
if(sIndex==position){
holder.text.setSelected(true);
}else {
holder.text.setSelected(false);
}
return convertView;
}
}
private static class rightViewHolder {
TextView text;
}
ScreenTools代码
/**
* 操作屏幕工具
*/
public class ScreenTools {
/**
* 设置手机屏幕亮度变暗
*/
public static void lightoff(Activity activity) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.alpha = 0.4f;
activity.getWindow().setAttributes(lp);
}
/**
* 设置手机屏幕亮度显示正常
*/
public static void lighton(Activity activity) {
WindowManager.LayoutParams lp = activity.getWindow().getAttributes();
lp.alpha = 1f;
activity.getWindow().setAttributes(lp);
}
}