安卓 实现 长按textview 显示弹窗, 内容是textview的值, 弹窗样式是半透明效果,长度固定,文字居中显示,每行最多10个字,且文字区域和背景有间距 点击空白区域,关闭弹窗。
时间: 2023-10-23 19:14:14 浏览: 127
完美实现将activity作为dialog弹窗进行弹出
可以通过以下步骤实现:
1. 创建一个自定义的 PopupWindow 类,用于显示弹窗。在该类中设置半透明背景和固定长度,以及文字居中显示等属性。
2. 在长按 TextView 的事件监听器中,创建 PopupWindow 实例并设置其内容为 TextView 的值。然后将 PopupWindow 显示在屏幕上。
3. 在弹窗外部添加一个点击监听器,用于关闭弹窗。当用户点击弹窗外部区域时,关闭 PopupWindow。
下面是一个示例代码:
```
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
private PopupWindow mPopupWindow;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = findViewById(R.id.textView);
mTextView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
showPopupWindow();
return true;
}
});
}
private void showPopupWindow() {
// 创建 PopupWindow 实例
View popupView = LayoutInflater.from(this).inflate(R.layout.popup_window, null);
TextView popupTextView = popupView.findViewById(R.id.popupTextView);
popupTextView.setText(mTextView.getText());
mPopupWindow = new PopupWindow(popupView, 400, 200, true);
mPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.showAtLocation(mTextView, Gravity.CENTER, 0, 0);
// 弹窗外部添加点击监听器,用于关闭弹窗
View container = mPopupWindow.getContentView().getRootView();
container.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mPopupWindow.dismiss();
}
return false;
}
});
}
}
```
其中,`R.layout.popup_window` 是自定义的弹窗布局文件,可以根据需要进行修改。注意,该示例中的弹窗宽度为 400dp,高度为 200dp,可以根据实际需求进行调整。
阅读全文