Android WebView可以';设置为触摸式侦听器后不能滚动 预期结果

Android WebView可以';设置为触摸式侦听器后不能滚动 预期结果,android,xml,user-interface,Android,Xml,User Interface,Web视图可以滚动,并且可以响应移动或投掷等手势 我想了解的是Facebook应用程序。假设我们有一个内容视图,它由一个控制栏(位于状态栏右下方的上半部分)和一个显示某个网页的web视图组成。在上控制栏的左上角有一个菜单切换按钮,可以打开和关闭菜单窗格视图 通过向右移动内容视图显示菜单,通过将内容视图移回其原始位置隐藏菜单 除了单击菜单切换按钮外,还将实现web视图的拖动或拖动以隐藏菜单 问题 在将web视图设置为触摸式侦听器后,尝试在web视图中滚动时没有发生任何事情 源代码 MainActi

Web视图可以滚动,并且可以响应移动或投掷等手势

我想了解的是Facebook应用程序。假设我们有一个内容视图,它由一个控制栏(位于状态栏右下方的上半部分)和一个显示某个网页的web视图组成。在上控制栏的左上角有一个菜单切换按钮,可以打开和关闭菜单窗格视图

通过向右移动内容视图显示菜单,通过将内容视图移回其原始位置隐藏菜单

除了单击菜单切换按钮外,还将实现web视图的拖动或拖动以隐藏菜单

问题 在将web视图设置为触摸式侦听器后,尝试在web视图中滚动时没有发生任何事情

源代码
MainActivity.java

    <!-- Content view including a control bar 329dp wide by 40dp high,
           and a web view 329dp wide by 509dp high.

           Screen size is 329dp (width by 549dp (height).
           where the menu takes 80% of the width, that is, 263.2dp.

           There is an invisible view as a placeholder above the menu
           and to the left of the content view, which may be not necessary,
           but this is my way to implement it.
    -->
    <LinearLayout
        android:id="@+id/linear_layout_content_right"
        android:layout_width="329dp"
        android:layout_height="549dp"
        android:layout_marginLeft="-263.2dp"
        android:background="#FF0099FF"
        android:gravity="left|top"
        android:orientation="vertical" >

        <!-- The Menu button -->
        <Button
            android:id="@+id/button_menu"
            android:layout_width="55dp"
            android:layout_height="40dp"
            android:layout_gravity="left|top"
            android:onClick="onButtonMenuClicked"
            android:text="@string/button_menu" />

        <!-- The WebView -->
        <WebView
            android:id="@+id/web_view_content_right"
            android:layout_width="329dp"
            android:layout_height="509dp"
            android:longClickable="true"
            android:scrollbarStyle="insideOverlay" />

    </LinearLayout> <!-- End of Content right -->
public类MainActivity扩展了活动在OnTouchListener、OnTestureListener上的实现{
@SuppressLint(“SetJavaScriptEnabled”)
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//网络视图
WebView mWebViewContentRight=(WebView)findViewById(R.id.web\u view\u content\u right);
mWebViewContentRight.setWebViewClient(新的WebViewClient());
mWebViewContentRight.getSettings().setJavaScriptEnabled(true);
mWebViewContentRight.getSettings().setLoadsImagesAutomatically(true);
mWebViewContentRight.loadUrl(“http://m.com2us.com");
mWebViewContentRight.setOnTouchListener(此);
//手势检测器
mGestureDetector=新的GestureDetector(本);
//显示的键盘
InputMethodManager imm=(InputMethodManager)getSystemService(Context.INPUT\u方法\u服务);
if(imm.isAcceptingText()){
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),0);
}
}
//实现View.OnTouchListener
@凌驾
公共布尔onTouch(视图、运动事件){
final int X=(int)event.getRawX();
view=(view)view.getParent();//即线性布局内容右
LinearLayout.LayoutParams mLayoutParams=(LinearLayout.LayoutParams)view.getLayoutParams();
开关(event.getAction()&MotionEvent.ACTION\u掩码){
case MotionEvent.ACTION\u DOWN:
_xDelta=X-mLayoutParams.leftMargin;
打破
case MotionEvent.ACTION\u UP:
打破
case MotionEvent.ACTION\u指针\u向下:
打破
case MotionEvent.ACTION\u指针\u向上:
打破
case MotionEvent.ACTION\u移动:
如果(isMenuHidden==true){
如果((X-xDelta)<-384)| |((X-xDelta)>0)){
//移动最多允许480*80%=384像素向左移动,零像素向右移动
}否则{
//TODO:稍后实施
}
}else{//isMenuHidden==false
如果((X-xDelta)<-384)| |((X-xDelta)>0)){
//移动最多允许480*80%=384像素向左移动,零像素向右移动
}否则{
mLayoutParams.leftMargin=X-xDelta;
view.setLayoutParams(mLayoutParams);
if(mLayoutParams.leftMargin

谢谢。

我们需要查看您的触摸监听器的实现。看起来您正在通过在
onTouch
中返回
true
来消费事件


更多详细信息。

您希望通过添加触控监听器实现什么。解释您的问题!!!如果您希望添加缩放容量,可以使用此方法
mWebView.getSettings().SetBuilTinZoomControl(true)
我们需要更多您的缩写代码。就我而言,由于您省略了将任何内容加载到Web视图中的代码,因此预期不会发生任何事情。如果不看到更多代码,我将无法告诉您任何事。@BlackDevil我添加了更多我的目的,请检查。您对硬编码的dim做了什么Nence?!@StephanBranczyk我添加了一些细节。哦,你太棒了,案例结束了!!我想知道“事件被侦听器消耗”是什么意思?有参考吗?我仍然需要发布我的onTouch()代码。请看一看。“事件被侦听器消耗”例如,返回true,告诉调用者不需要对触摸事件做进一步的工作。如果还有更多的事情要做,则返回false,即倾听者公开不承诺处理所有事情,即不消费事件。