如何用popuwindow 写一个下拉框
时间: 2023-05-28 10:01:55 浏览: 104
下拉框通常使用Spinner控件实现。但是,也可以使用PopupWindow来实现类似的下拉框效果。
以下是一个简单的示例代码:
1. 首先,在布局文件中添加一个按钮和一个PopupWindow的布局:
```
<Button
android:id="@+id/btn_dropdown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下拉框" />
<LinearLayout
android:id="@+id/layout_dropdown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical"
android:visibility="gone">
<TextView
android:id="@+id/tv_item1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项1" />
<TextView
android:id="@+id/tv_item2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项2" />
<TextView
android:id="@+id/tv_item3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="选项3" />
</LinearLayout>
```
2. 在Java代码中,创建PopupWindow实例,并设置它的内容和宽度:
```
// 获取布局
View contentView = LayoutInflater.from(this).inflate(R.layout.dropdown_layout, null);
// 创建PopupWindow实例
PopupWindow popupWindow = new PopupWindow(contentView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
```
3. 设置PopupWindow的动画和背景,以及按钮的点击事件:
```
// 设置动画
popupWindow.setAnimationStyle(R.style.AnimationFade);
// 设置背景
popupWindow.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
// 设置按钮点击事件
Button btnDropdown = findViewById(R.id.btn_dropdown);
btnDropdown.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (popupWindow.isShowing()) {
popupWindow.dismiss();
} else {
popupWindow.showAsDropDown(v);
}
}
});
```
4. 设置PopupWindow中的选项点击事件,并关闭PopupWindow:
```
TextView tvItem1 = contentView.findViewById(R.id.tv_item1);
TextView tvItem2 = contentView.findViewById(R.id.tv_item2);
TextView tvItem3 = contentView.findViewById(R.id.tv_item3);
tvItem1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理选项1的点击事件
popupWindow.dismiss();
}
});
tvItem2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理选项2的点击事件
popupWindow.dismiss();
}
});
tvItem3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 处理选项3的点击事件
popupWindow.dismiss();
}
});
```
这样,一个简单的下拉框就完成了。当用户点击按钮时,PopupWindow会从按钮下方弹出,显示选项列表。当用户选择一项后,PopupWindow会关闭。
阅读全文