设置PopupWindow的背景色

时间:2021-04-19 14:47:33

很多时候我们需要自己设置PopupWindoew的背景颜色,怎么做呢?直接在一工具类中写个公共方法,就可以随时引用了。

1.我的是:

public class TipsUtil {
    
    //PopupWindow的背景  public static void setBackgroundAlpha(AppCompatActivity activity, float bgAlpha) {
        WindowManager.LayoutParams lp = activity.getWindow()
                .getAttributes();  lp.alpha = bgAlpha;  (activity).getWindow().setAttributes(lp);  }
    
}


2.在需要的地方引用就行了:

TipsUtil.setBackgroundAlpha(AddPeriodical.this, 1.0f);

3.(实例)比如我的popupWindow:

public void showClassifyPopupWindow() {
    View contentView = LayoutInflater.from(AddPeriodical.this).inflate(R.layout.list_veiw, null);  ListView listView = contentView.findViewById(R.id.all_list_view);  //添加用户的所有分类  loadAllBooksClassify();  //itme的点击事件  listView.setOnItemClickListener(new ItemClickListener());  //创建PopupWindow  popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.MATCH_PARENT, 500);  popupWindow.setBackgroundDrawable(new ColorDrawable());  popupWindow.setOutsideTouchable(true);//点击外部消失  popupWindow.setTouchable(true); //设置可以点击  popupWindow.setAnimationStyle(R.style.mypopwindow_anim_style);//进入退出的动画  popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {//监听退出  @Override  public void onDismiss() {
            popupWindow.dismiss();  }
    });  TipsUtil.setBackgroundAlpha(AddPeriodical.this, 0.6f);  // 按下android回退物理键 PopipWindow消失解决  listView.setOnKeyListener(new View.OnKeyListener() {
        @Override  public boolean onKey(View v, int keyCode, KeyEvent event) {
            if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                if (popupWindow != null && popupWindow.isShowing()) {
                    popupWindow.dismiss();  return true;  }
                TipsUtil.setBackgroundAlpha(AddPeriodical.this, 1.0f);  }
            return false;  }
    }); 
 popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
        @Override  public void onDismiss() {
            TipsUtil.setBackgroundAlpha(AddPeriodical.this, 1.0f);  }
    }); }
//listView点击item项的监听 public class ItemClickListener implements AdapterView.OnItemClickListener {
    @Override  public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        GetBookMarkTypeAll.DataBean bean = (GetBookMarkTypeAll.DataBean) arg0.getAdapter().getItem(position);  int id = bean.getId();//类型id  String classifyNick = bean.getTypeName();//类型昵称  int lenght = ((GetBookMarkTypeAll.DataBean) arg0.getAdapter().getItem(position)).getCount();  //根据分类id获取文章  getData(id);//添加到分类内容中  tittle.setText(classifyNick + " · " + lenght);  popupWindow.dismiss();  TipsUtil.setBackgroundAlpha(AddPeriodical.this, 1.0f);  }
}


4.我的效果图:设置PopupWindow的背景色

5.我的PopupWindow使用的地方:

showClassifyPopupWindow(); popupWindow.showAtLocation(relativeLayout, Gravity.BOTTOM, 0, 0);//relativeLayout是你需要显示的Activity的根布局

6.我的跟布局:

@BindView(R.id.add_rl)
RelativeLayout relativeLayout; @BindView(R.id.add_null)
TextView addNull; @BindView(R.id.add_periodical)
ListView addPeriodical;
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:id="@+id/add_rl"  android:layout_width="match_parent"  android:layout_height="match_parent"  android:background="@color/white"  android:orientation="vertical"> 
 <include  android:id="@+id/add_head"  layout="@layout/layout_title" /> 
 <TextView  android:id="@+id/add_null"  style="@style/maidan"  android:layout_centerInParent="true"  android:text="您暂时没有收藏的文章~~"  android:visibility="gone" /> 
 <ListView  android:id="@+id/add_periodical"  android:layout_width="match_parent"  android:layout_height="wrap_content"  android:layout_above="@id/add_food"  android:layout_below="@id/add_head"  android:descendantFocusability="blocksDescendants"></ListView>  </RelativeLayout>