下拉菜单
(使用PopupWindow+ListView实现)
popupwindow中showAtLocation和showAsDropDown区别 |
实现以下类似的下拉效果: 1、布局 a) activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rl"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<EditText
android:id="@+id/et_number"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="15dp"
android:ems="12"
android:hint="请输入账号"
android:inputType="number" >
<requestFocus />
</EditText>
<Button
android:id="@+id/bt"
android:layout_width="40dp"
android:layout_height="match_parent"
android:layout_alignBottom="@id/et_number"
android:layout_alignRight="@id/et_number"
android:layout_alignTop="@id/et_number"
android:background="@drawable/button"
android:gravity="center" />
</RelativeLayout> b) qq_list_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="wrap_content"
android:gravity="center_vertical"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<ImageView
android:id="@+id/iv_user_header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="10dp"
android:clickable="false"
android:focusable="false"
android:src="@drawable/user" />
<TextView
android:id="@+id/tv_qq_number"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_weight="10"
android:gravity="center"
android:text="qq号码" />
<ImageButton
android:id="@+id/ib_delete"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_vertical"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="@drawable/delete" />
<!-- android:src="@drawable/delete"不要用src,有背景图标 -->
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="#33000000" />
</LinearLayout>
|
2、核心代码:
|
结果: |
问题: 分析:由于使用PopupWindow使用了下面这句 View parent = View.inflate(getApplicationContext(), R.layout.qq_list_item, null); popupWindow.showAtLocation(parent, gravity, location[0], et_height+location[1]); 解决: View parent = this.findViewById(R.id.rl); 注意: ViewParent parent = bt.getParent();返回的不是View而是ViewParent |