【问题标题】:In landscape mode, the ListView and WebView inside ScrollView not working as expected在横向模式下,ScrollView 中的 ListView 和 WebView 无法按预期工作
【发布时间】:2015-10-02 20:56:42
【问题描述】:

我知道我不能在ScrollView 中使用ListView,因为在这种情况下ScrollView 获得焦点并且ListView 变得不可滚动。但是我有一个程序可以同时滚动ListView 和ScrollView。(跟随Mr. Arshu 的最佳答案)

我的activity_main.xml的结构

<RelativeLayout    >

<ScrollView 
    android:fillViewport="true"  >

    <LinearLayout   >

        <TextView />

        <TextView  />

        <LinearLayout   >

            <Button
                android:id="@+id/button1"   />

            <Button
                android:id="@+id/button2"   />

        </LinearLayout>

        <RelativeLayout 
            android:visibility="gone"  >

            <WebView />

            <ImageView   />

        </RelativeLayout>

        <LinearLayout   >

            <TextView  />

            <TextView />

            <TextView />

            <TextView />
            
        </LinearLayout>
    </LinearLayout>
</ScrollView> 

<LinearLayout 
    android:layout_alignParentBottom="true" >

    <ImageView />

    <Button />

    <ListView
        android:visibility="gone"  />
</LinearLayout>

</RelativeLayout>

这在纵向模式下非常有效。Activity 中的每个 View 都有自己的用途。

但我在Landscape 模式下有两个问题。 [我不能使用activity-land,因为我正在WebView播放视频]

  1. 当我单击按钮时,ListView 可见。

在portrait 模式下,它显示所有项目(例如:10)。当我将模式更改为横向时,ListView 不会完全滚动,它只显示 5 或 5 1/2 个项目。

2.WebView 在点击Button 时启用可见性。

如果假设我在纵向模式下启用 webview 并且视频开始播放,并且在两者之间如果我将模式更改为 Landscape 那么 WebView 会消失但视频不会停止。我能听到视频。

我尝试使用savedInstanceState控制view。

代码sn-p:

button1.setOnClickListener(new View.OnClickListener()
{
    @Override
    public void onClick(View view)
    {
        if(savedInstanceState==null)
        {
            String uriPath = "http://player.vimeo.com/***/****";
            Layout.setVisibility(View.VISIBLE);
            myWebView.setWebViewClient(new WebViewClient());
            myWebView.getSettings().setJavaScriptEnabled(true);
            myWebView.loadUrl(uriPath);
        }else {
            Layout.setVisibility(View.VISIBLE);
            myWebView.restoreState(savedInstanceState);
        }
    }
});

ListView的图片:

纵向:

横向:

如何解决这两个问题。

请帮忙。

谢谢。

【问题讨论】:

    标签: android android-listview webview scrollview landscape


    【解决方案1】:

    你如何自己处理方向变化 我是说 android:configChanges="keyboardHidden|orientation|screenSize" 将上述属性添加到 Manifest 文件中的Activity 标签中。

    【讨论】:

    • 这解决了WebView 问题。但是,ListView 奇怪的行为仍然存在.. :(
    【解决方案2】:

    我希望您的视图的这个触摸监听器有助于解决您的问题。

    Yourview.setOnTouchListener(new OnTouchListener() {
            // Setting on Touch Listener for handling the touch inside
            // ScrollView
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // Disallow the touch request for parent scroll on touch of
                // child view
                v.getParent().requestDisallowInterceptTouchEvent(true);
                return false;
            }
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多