当前位置: 移动技术网 > IT编程>移动开发>Android > android用PopWindow做下拉框实例代码

android用PopWindow做下拉框实例代码

2019年07月24日  | 移动技术网IT编程  | 我要评论

神裂火织同人,中国电视报,which引导的定语从句

最近在做下拉框,本来想用spinner,可是spinner达不到项目要求,跟同学同事问了一圈,都在用popwindow,网上看了一下,popwindow挺简单的,可定制性挺强的,符合我的要求,所以,借鉴网上看的代码,自己撸了一遍。写篇博客以防忘记。

 首先,先写个自定义布局,代码如下

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="110dp"
 android:layout_height="wrap_content">
 <linearlayout
  android:layout_width="100dp"
  android:layout_height="wrap_content"
  android:background="@drawable/bg_circle_drop_down_qr_code"
  android:orientation="vertical"
  android:layout_marginright="@dimen/padding_10"
  android:paddingbottom="0dp"
  android:paddingleft="@dimen/padding_5"
  android:paddingright="@dimen/padding_5"
  android:paddingtop="@dimen/padding_5">

  <linearlayout
   android:id="@+id/lin_scan_qr_code"
   android:layout_width="match_parent"
   android:layout_height="0dp"
   android:layout_weight="1"
   android:gravity="center"
   android:orientation="horizontal"
   android:paddingbottom="@dimen/padding_5"
   android:paddingtop="@dimen/padding_5">

   <imageview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_circle_scan_qr_code" />

   <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginleft="@dimen/padding_10"
    android:gravity="center"
    android:text="扫一扫"
    android:textcolor="@color/color_white"
    android:textsize="@dimen/text_16" />
  </linearlayout>

  <view
   android:layout_width="wrap_content"
   android:layout_height="1px"
   android:layout_marginleft="@dimen/padding_3"
   android:layout_marginright="@dimen/padding_3"
   android:background="@color/color_white" />

  <linearlayout
   android:id="@+id/lin_my_qr_code"
   android:layout_width="match_parent"
   android:layout_height="0dp"
   android:layout_weight="1"
   android:gravity="center"
   android:orientation="horizontal"
   android:paddingbottom="@dimen/padding_5"
   android:paddingtop="@dimen/padding_5">

   <imageview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/ic_circle_my_qr_code" />

   <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginleft="@dimen/padding_10"
    android:gravity="center"
    android:text="二维码"
    android:textcolor="@color/color_white"
    android:textsize="@dimen/text_16" />
  </linearlayout>
 </linearlayout>
</linearlayout>

 第二步,在代码中定义popwindow样式,绑定点击事件,代码如下:

// // 获取自定义布局文件pop.xml的视图
  view customview = getactivity().getlayoutinflater().inflate(r.layout.lay_circle_pop_drop_down_qr_code,
    null, false);
  // 创建popupwindow实例,200,150分别是宽度和高度

  mqrcodepopwindow = new popupwindow(customview, commonutil.diptopx(getcontext(),110), viewgroup.layoutparams.wrap_content,true);
  // 设置动画效果 [r.style.animationfade 是自己事先定义好的]
//  popupwindow.setanimationstyle(r.style.animationfade);
//  popupwindow.settouchable(true);
//  popupwindow.setoutsidetouchable(true);
  mqrcodepopwindow.setbackgrounddrawable(new bitmapdrawable());
  customview.findviewbyid(r.id.lin_scan_qr_code).setonclicklistener(v -> {
   toastutil.show(getcontext(),"扫一扫");
   dismissqrcodepopwindow();
  });
  customview.findviewbyid(r.id.lin_my_qr_code).setonclicklistener(v -> toastutil.show(getcontext(),"二维码"));

 注意,代码中的true为setfoucusable,如要点击空白处隐藏popwindow的话,setfocusable(true)和setbackground()两者必不可少(亲测)。

最后,为空间添加点击事件,控制下拉框的显示隐藏,代码如下:

@onclick(r.id.lin_top_right)
 public void onclick(view v) {
  if (mqrcodepopwindow != null&& mqrcodepopwindow.isshowing()) {
   mqrcodepopwindow.dismiss();
  } else {
   initqrcodepopwindow();
   mqrcodepopwindow.showasdropdown(v);
  }
 }

(由于暂时没有发现好的动画效果,所以没有添加动画,如果大家有发现好的动画,还请告知一二,在此谢过)

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网