安卓 实现 长按textview 显示弹窗,内容是textview的值,弹窗样式是半透明效果, 点击空白区域,关闭弹窗。
时间: 2023-12-01 18:02:07 浏览: 35
可以按照以下步骤实现:
1.在布局文件中添加一个 TextView,设置长按监听器:
```xml
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="长按我弹窗"
android:textSize="20sp"
android:textColor="#000000"
android:longClickable="true"
/>
```
2.在 Activity 或 Fragment 中实现长按监听器,并创建弹窗:
```java
TextView textView = findViewById(R.id.textView);
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
// 创建弹窗
final PopupWindow popupWindow = new PopupWindow(MainActivity.this);
popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
// 设置弹窗内容
TextView popupTextView = new TextView(MainActivity.this);
popupTextView.setText(((TextView)view).getText().toString());
popupTextView.setTextSize(20);
popupTextView.setTextColor(Color.BLACK);
popupTextView.setBackgroundResource(R.drawable.popup_bg); // 设置弹窗样式
// 将内容添加到弹窗中
popupWindow.setContentView(popupTextView);
// 显示弹窗
popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
// 点击空白区域关闭弹窗
popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
// 关闭弹窗
}
});
return true;
}
});
```
3.在 res/drawable 文件夹下创建一个名为 popup_bg.xml 的文件,设置半透明效果:
```xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#80000000"/>
<corners android:radius="8dp"/>
</shape>
```
这样就完成了长按 TextView 弹出半透明弹窗的功能。