提问人:David Hershkovich 提问时间:8/14/2023 最后编辑:David Hershkovich 更新时间:8/14/2023 访问量:43
文本选择句柄始终可见
Text selection handles always visible
问:
我正在开发一个包含 Webview 的应用程序。用户在 Web 视图中选择文本后,面板会在 Web 视图顶部向上滑动和展开,并且可以隐藏所选文本。在此情况下,文本选择手柄会通过面板弹出。这种行为是不希望的,并且会分散用户的注意力。
我不希望选择输入在面板显示后消失。只是不希望通过面板看到手柄。
找不到解决此问题的好解决方案或解决方法。
有什么想法吗? 请帮忙。
谢谢
答:
-1赞
Akash Pal
8/14/2023
#1
**我也遇到过这种类型的错误,这是解决方案**
当然!以下示例演示了如何使用 WebView 和滑动面板在 Android 应用程序中实现所需的行为。您需要创建一个 Android 项目并修改以下组件:
XML 布局 (activity_main.xml):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<RelativeLayout
android:id="@+id/panel"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_alignParentBottom="true"
android:background="#333"
android:visibility="invisible">
<!-- Sliding Panel Content -->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Sliding Panel Content"
android:textColor="#fff"/>
</RelativeLayout>
</RelativeLayout>
Java 代码 (MainActivity.java):
public class MainActivity extends AppCompatActivity {
private WebView webView;
private RelativeLayout panel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = findViewById(R.id.webview);
panel = findViewById(R.id.panel);
// Load a webpage in the WebView
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://www.example.com");
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient() {
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
// Hide the panel if the scale changes (e.g., when the user zooms in/out)
panel.setVisibility(View.INVISIBLE);
}
});
// When the WebView is long-pressed (text is selected), show the panel
webView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// Show the sliding panel
panel.setVisibility(View.VISIBLE);
return false;
}
});
// When the panel is clicked, hide it
panel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
panel.setVisibility(View.INVISIBLE);
}
});
}
}
确保您在 AndroidManifest.xml 和 build.gradle 文件中设置了必要的权限和依赖项。
此示例在 Android 布局中设置 WebView 和滑动面板。当用户长按 WebView(选择文本)时,面板将变为可见。单击面板时,它会再次隐藏。此外,如果用户在 WebView 上放大/缩小,面板将自动隐藏。您可以根据需要进一步自定义行为和外观
评论
0赞
David Hershkovich
8/15/2023
谢谢,但这并不能解决文本选择句柄的问题。它们仍然显示在面板顶部。
0赞
Rahul Rokade
8/21/2023
请尝试此链接检查
评论