【问题标题】:Issue when using Scrollview inside Dialog在 Dialog 中使用 Scrollview 时出现问题
【发布时间】:2014-09-30 06:40:55
【问题描述】:

我在一个对话框中膨胀一个布局,它由一个滚动视图组成,但布局不滚动。我从stackoverflow中提到了很多问题,但它也不起作用。我的 layout.xml 如下所示:

<?xml version="1.0" encoding="utf-8"?>
  <ScrollView 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
         android:layout_height="match_parent"
        android:layout_margin="5dp"
        android:background="@color/White"
       >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/White"
        android:scrollbars="vertical"
            android:scrollbarAlwaysDrawVerticalTrack="true"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_margin="5dp"
            android:text="Update available"
            android:textColor="#000000" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:gravity="center"
            android:text="@string/upgrade_msg"
            android:textColor="#000000" />

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="300dp"
            android:layout_margin="3dp"
            android:layout_weight="0.02"
            android:src="@drawable/updateimg2" />

        <Button
            android:id="@+id/btn_upgrade"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_forget_pwd"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:background="@color/White"
            android:gravity="center"
            android:text="Upgrade Now"
            android:textColor="@color/Black" />

        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:scaleType="fitXY"
            android:src="@drawable/line_y_h" />

        <Button
            android:id="@+id/btn_remind"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/tv_forget_pwd"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:background="@color/White"
            android:gravity="center"
            android:text="Remind Me Later"
            android:textColor="@color/Blue" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:scaleType="fitXY"
            android:src="@drawable/line_y_h" />
    </LinearLayout>

</ScrollView>
  • 对话框代码

      public void show_Alert_version_custom(String str, final String url,
                final String exitStatus)// use for
        {
            final Dialog dialog = new Dialog(Splash.this);
            dialog.setContentView(R.layout.version_update);
            dialog.setTitle(getString(R.string.alert_title));
            Button dialogButton2 = (Button) dialog.findViewById(R.id.btn_remind);
            dialogButton = (Button) dialog.findViewById(R.id.btn_upgrade);
            ImageView viewLine = (ImageView) dialog.findViewById(R.id.imageView2);
    
    
            // if button is clicked, close the custom dialog
            dialogButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {}
            });
    
            // if button is clicked, close the custom dialog
            dialogButton2.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {}
            });
    
            dialog.show();
        }
    

【问题讨论】:

  • 你能发布你的对话代码吗??
  • 最好使用另一个 xml 文件...不要去这么大的对话框。
  • 你必须使用scrollview的静态高度。
  • 一般ScrollView有更多内容时滚动。虽然使用此代码会滚动它。 scrollview.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub try { v.getParent().requestDisallowInterceptTouchEvent(true); } catch (Exception e) { // TODO: handle exception } return false; } });

标签: android dialog


【解决方案1】:
ScrollView 中的

android:fillViewport="true" 解决了我的问题。现在它甚至在对话框内滚动。

【讨论】:

  • 对我有帮助。我在代码中遇到了这个问题。
  • 澄清一下,您将代码放在 Scrollview 标记中,如下所示:&lt;ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="match_parent" android:fillViewport="true" android:layout_margin="5dp" android:background="@color/White" &gt;
  • @GianGomen 是的,我按照你说的做了
【解决方案2】:

您可以在 ScollView 上使用以下代码。它工作正常。

<ScrollView>
    <LinearLayout android:orientation="vertical"
            android:scrollbars="vertical"
            android:scrollbarAlwaysDrawVerticalTrack="true">

    </LinearLayout>
</ScrollView>

【讨论】:

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