文本选择手柄始终可见

问题描述 投票:0回答:1

我正在开发一个包含 Webview 的应用程序。用户在 Web 视图中选择文本后,面板会向上滑动并在 Web 视图顶部展开,并且可以隐藏所选文本。在这种情况下,文本选择手柄会通过面板弹出。这种行为是不希望的并且会分散用户的注意力。

我不希望选择输入在面板显示后消失。只是不想通过面板看到手柄。

无法找到解决此问题的良好解决方案或变通方法。

有什么想法吗? 请帮忙。

谢谢你

android kotlin android-layout webview textselection
1个回答
0
投票

**我也遇到了这种类型的错误,这是解决方案**

当然!下面的示例说明了如何使用 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):

公共类 MainActivity 扩展 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,面板会自动隐藏。您可以根据您的需要进一步自定义行为和外观

© www.soinside.com 2019 - 2024. All rights reserved.