【问题标题】:How to make whole activity scrollable according to the data inside it如何根据其中的数据使整个活动可滚动
【发布时间】:2016-02-08 12:43:12
【问题描述】:

我已经尝试了 LinearLayout,我在其中放置了几个 textview。我完全为每个视图使用权重。当数据长度过多并且 textview 不能完全显示时,就会出现问题。我也尝试过 tabletlayout,但那东西也不起作用,因为最终 tablelayout 是在具有权重的线性布局内,所以它不会超过一定的限制。我想知道如何在使用权重时通过显示所有数据来使活动可滚动。

【问题讨论】:

    标签: android android-layout android-linearlayout android-tablelayout vertical-scrolling


    【解决方案1】:

    在活动的 xml 布局中使用 Scrollview。

    示例: 您的活动的 XML 代码:

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:padding="10dp"
        android:fillViewport="false">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">
            <ImageView
                android:id="@+id/imageView"
                android:layout_width="wrap_content"
                android:layout_height="200dp"
                android:scaleType="centerCrop"
                android:src="@drawable/image" />
    
            <Button
                android:id="@+id/button"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="KNOW MORE" />
    
            <TextView
                android:id="@+id/textView"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/title"
                android:textAppearance="?android:attr/textAppearanceLarge" />
    
            <TextView
                android:id="@+id/textView2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/description"
                android:textAppearance="?android:attr/textAppearanceSmall" />
        </LinearLayout>
    </ScrollView>
    

    【讨论】:

    • 我说的是完全使用权重而不使用 dp 等,当我使用权重时,我的 textview 显示的区域有限。如何在使用权重时进行此类滚动。我想显示滚动的整页数据
    【解决方案2】:

    您可以将滚动视图与线性布局以及相对布局一起使用。

    您可以尝试此代码,只需复制并粘贴到 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="fill_parent"
          android:fillViewport="true">
    
    <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:background="@android:color/black"
    >
    
    <TextView
        android:id="@+id/TV_Welcome"
        android:text="ADD YOUR VEHICLE"
        android:layout_marginLeft="70dp"
        android:layout_marginTop="10dp"
        android:textSize="20dp"
        android:layout_centerHorizontal="true"
    
        android:textColor="@color/menu_color"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical|center_horizontal"/>
    
    
    <RelativeLayout
        android:id="@+id/RelativeLayout01"
        android:layout_below="@+id/TV_Welcome"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
    
        <TextView
            android:id="@+id/TV_BlockNo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Block No:"
            android:textColor="@color/version_color"
            android:layout_marginLeft="10dp"
            android:textSize="15dp"
            android:layout_alignParentLeft="true"
            android:gravity="left"
    
            />
    
        <Spinner
            android:id="@+id/Spinner_BlockNo"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@+id/TV_BlockNo"
            android:background="#558cff"
            android:layout_width="300dp"
            android:layout_height="wrap_content">
    
        </Spinner>
    </RelativeLayout>
    
    <RelativeLayout
        android:id="@+id/RelativeLayout02"
        android:layout_margin="10dp"
        android:layout_below="@+id/RelativeLayout01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/TV_FlatNo"
            android:text="Flat NO:"
            android:textSize="15dp"
            android:layout_marginLeft="10dp"
            android:textColor="@color/version_color"
    
            />
    
        <Spinner
            android:id="@+id/Spinner_FlatNo"
            android:layout_marginLeft="42dp"
            android:layout_toRightOf="@+id/TV_FlatNo"
            android:background="#558cff"
            android:layout_width="300dp"
    
            android:layout_height="wrap_content"></Spinner>
    
    </RelativeLayout>
    
    <RelativeLayout
        android:id="@+id/RelativeLayout03"
        android:layout_below="@+id/RelativeLayout02"
        android:layout_margin="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
    
        <TextView
            android:id="@+id/TV_VehicleNo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Vehicle No:"
            android:textColor="@color/version_color"
            android:layout_marginLeft="10dp"
            android:textSize="15dp"
            android:layout_alignParentLeft="true"
            android:gravity="left"
    
            />
    
        <EditText
            android:id="@+id/ET_VehicleNo"
            android:layout_marginLeft="20dp"
            android:hint="Enter Vehicle No"
            android:textColorHint="@color/menu_glow"
            android:textSize="20dp"
            android:layout_toRightOf="@+id/TV_VehicleNo"
            android:textColor="#558cff"
            android:layout_width="400dp"
            android:layout_height="wrap_content"
    
            />
    
    
    </RelativeLayout>
    
    
    <RelativeLayout
        android:id="@+id/RelativeLayout04"
        android:layout_margin="10dp"
        android:layout_below="@+id/RelativeLayout03"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/TV_VehicleType"
            android:text="Vehicle Type:"
            android:textSize="15dp"
            android:layout_marginLeft="10dp"
            android:textColor="@color/version_color"
    
            />
    
        <Spinner
            android:id="@+id/Spinner_VehicleType"
            android:layout_marginLeft="10dp"
            android:layout_toRightOf="@+id/TV_VehicleType"
            android:background="#558cff"
            android:layout_width="300dp"
            android:layout_height="wrap_content">
    
        </Spinner>
    
    </RelativeLayout>
    
    <RelativeLayout
        android:id="@+id/RelativeLayout05"
        android:layout_margin="10dp"
        android:layout_below="@id/RelativeLayout04"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/TV_OwnerName"
            android:text="Owner Name:"
            android:textSize="15dp"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:gravity="left">
        </TextView>
        <EditText
            android:id="@+id/ET_OwnerName"
            android:hint="Enter Owner Name"
            android:textColorHint="@color/menu_glow"
            android:inputType="textPersonName"
            android:layout_marginLeft="20dp"
            android:textSize="20dp"
            android:layout_toRightOf="@id/TV_OwnerName"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="400dp">
        </EditText>
    </RelativeLayout>
    
    
    <RelativeLayout
        android:id="@+id/RelativeLayout06"
        android:layout_margin="10dp"
        android:layout_below="@id/RelativeLayout05"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/TV_MobileNo"
            android:text="Mobile No:"
            android:textSize="15dp"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_alignParentLeft="true"
            android:gravity="left">
        </TextView>
        <EditText
            android:id="@+id/ET_MobileNo"
            android:layout_marginLeft="40dp"
            android:hint="Enter 10 digit"
            android:textColorHint="@color/menu_glow"
            android:inputType="phone"
            android:textSize="20dp"
            android:layout_toRightOf="@id/TV_MobileNo"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="200dp"
    
            >
        </EditText>
    </RelativeLayout>
    
    
    <RelativeLayout
        android:id="@+id/RelativeLayout07"
        android:layout_margin="10dp"
        android:layout_below="@id/RelativeLayout06"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/TV_TelNo"
            android:text="Telephone No:"
            android:textSize="15dp"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">
        </TextView>
        <EditText
            android:id="@+id/ET_TelNo"
            android:layout_marginLeft="20dp"
            android:hint="Enter Telephone No"
            android:textColorHint="@color/menu_glow"
            android:inputType="number"
            android:textSize="17dp"
            android:layout_toRightOf="@id/TV_TelNo"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">
        </EditText>
    </RelativeLayout>
    
    
    <RelativeLayout
        android:id="@+id/RelativeLayout08"
        android:layout_margin="0dp"
        android:layout_below="@id/RelativeLayout07"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/TV_Example"
            android:text="(Example:0141-2206923)"
            android:layout_marginLeft="120dp"
            android:textSize="10dp"
            android:textColor="@color/version_color"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content">
        </TextView>
    </RelativeLayout>
    
    <ImageView
        android:id="@+id/ImageView_Submit"
        android:layout_marginTop="5dp"
        android:layout_marginLeft="100dp"
        android:layout_centerInParent="true"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@drawable/submit"
        android:layout_below="@id/RelativeLayout08"
        android:onClick="doSubmit"></ImageView>
    
        </RelativeLayout>
    </ScrollView>
    

    【讨论】:

    • 我说的是完全使用权重而不是使用 dp 等,当我使用权重时,我的 textview 显示的区域有限。如何在使用权重时进行此类滚动。我想显示滚动的整页数据
    • 您在布局中设置的高度和宽度。因为使用 layout_weight 您可以指定多个视图之间的大小比例。例如。你有一个 MapView 和一个应该向地图显示一些附加信息的表格。地图应占屏幕的 3/4,表格应占屏幕的 1/4。然后将地图的 layout_weight 设置为 3,将表格的 layout_weight 设置为 1。要使其正常工作,您还必须将高度或宽度(取决于您的方向)设置为 0px。
    • 希望它会帮助你,如果不是,请给我你唯一的 xml 代码,我会更正那个.... :) :)
    【解决方案3】:

    您可以使用 ScrollView 使您的活动可滚动。 它使用起来非常简单有效。只需从下面复制 ScrollView 的代码并将其粘贴到您的布局 xml 文件中。 您也可以将此 ScrollView 与线性以及相对布局一起使用。 只需要记住一件事,ScrollView 只能有一个子窗口小部件。如果你想要更多的孩子,然后将它们包装到一个容器中。

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical">
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
    
                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/xyz.png"/>
    
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/textView1"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="TextView1"/>
    
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="horizontal">
    
                <TextView
                    android:id="@+id/textView2"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="TextView2"/>
    
                <TextView
                    android:id="@+id/textView3"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="TextView3"/>
    
                <TextView
                    android:id="@+id/textView4"
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:text="TextView4"/>
    
            </LinearLayout>
    
            <LinearLayout
                android:layout_width="fill_parent"
                android:layout_height="wrap_content">
    
                <Button
                    android:id="@+id/btn_demo"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="Demo" />
    
            </LinearLayout>
    
        </LinearLayout>
    
    </ScrollView>
    

    【讨论】:

    • 我说的是完全使用权重而不是使用 dp 等,当我使用权重时,我的 textview 显示的区域有限。如何在使用权重时进行此类滚动。我想显示滚动的整页数据
    • @PrashantSinghVerma 显示您的 xml,以便我可以帮助您。
    【解决方案4】:

    基本上,您必须将整个 xml 布局放在滚动视图中。请参阅其他代码示例。

    【讨论】:

    • 我说的是完全使用权重而不是使用 dp 等,当我使用权重时,我的 textview 显示的区域有限。如何在使用权重时进行此类滚动。我想显示滚动的整页数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多