LinearLayout 不显示

LinearLayout not Displaying

嗨,我正在学习 Android。

这是我的布局代码:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.aidsdruginformation.DetailActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="ApprovalStatus"
                android:textAlignment="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="FDA-approved"
                android:textAlignment="center" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="ApprovalStatus"
                android:textAlignment="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="GDA-approved"
                android:textAlignment="center" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

UI 截图:

我希望我的 UI 看起来如何: 为什么第二个 LinearLayout 没有显示? 难道我做错了什么? 使用 layout_width 时,父元素是否应具有固定尺寸? 请指教..

Link 到我的回购: https://github.com/MukundPradeep/AidsDrugInformation

只需给父线性布局这个属性:

android:weightSum="2" 那么您的两个子线性布局都会显示在屏幕上。

尝试,向 ScrollView 添加一些属性,

android:fillViewport="true", android:isScrollContainer="true"

添加 LinearLayout 作为 ScrollView 的父级


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ScrollView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:isScrollContainer="true" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:weightSum="10" >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="2" >

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:elevation="4dp"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="ApprovalStatus"
                    android:textAlignment="center" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:elevation="4dp"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="FDA-approved"
                    android:textAlignment="center" />
            </LinearLayout >

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="1"
                android:orientation="horizontal"
                android:weightSum="2" >

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:elevation="4dp"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="ApprovalStatus"
                    android:textAlignment="center" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:elevation="4dp"
                    android:gravity="center"
                    android:padding="8dp"
                    android:text="GDA-approved"
                    android:textAlignment="center" />
            </LinearLayout >

            <View
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:layout_weight="8" />
        </LinearLayout >
    </ScrollView >
</LinearLayout >

我试过你的代码,它显示

试试这个方法

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    tools:context="com.example.android.aidsdruginformation.DetailActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="ApprovalStatus"
                android:textAlignment="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="FDA-approved"
                android:textAlignment="center" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:orientation="horizontal">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="ApprovalStatus"
                android:textAlignment="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="GDA-approved"
                android:textAlignment="center" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

输出

你可以使用android:fillViewport

Defines whether the scrollview should stretch its content to fill the viewport.

Must be a boolean value, either "true" or "false".

您应该尝试以下方法。将 LinearLayout 作为 root .

    <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:fillViewport="true">
       // Your Staff
    </ScrollView>
</LinearLayout>

  <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.aidsdruginformation.DetailActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="ApprovalStatus"
                android:textAlignment="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="FDA-approved"
                android:textAlignment="center" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="ApprovalStatus"
                android:textAlignment="center" />

            <TextView
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:elevation="4dp"
                android:padding="8dp"
                android:text="GDA-approved"
                android:textAlignment="center" />
        </LinearLayout>
    </LinearLayout>
</ScrollView>

您将第一个布局权重设置为 1。这将占用整个屏幕的高度。你可以把它分开。但如果你给了权重,那么在 scrollview 里面还有什么用。

检查此内容。如果有帮助,请将其设为正确。

<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="20dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:layout_weight="1"
        android:id="@+id/l1"
        >


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:text="Now book a ride at 6Rs/km with uber go"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true" />




            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="7/11 supermarket get special discounts today only"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true" />






    </RelativeLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/l1"
        android:padding="10dp"
        android:layout_weight="1"
        android:id="@+id/l2">


            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:text="10% discount on all meals"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true" />




            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:text="Clearance sale upto 40% off"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true" />





    </RelativeLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="201dp"
        android:layout_below="@id/l2"
        android:layout_weight="1"
        android:padding="10dp"
        >

       <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:text="Starbucks coffee try our special new mocha latte for a limited period discount"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true" />

               <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:textStyle="bold"
                android:textColor="#ffffff"
                android:text="Buy 2 get 1 free*"
                android:layout_centerVertical="true"
                android:layout_alignParentStart="true" />
     </RelativeLayout>
</LinearLayout>

用另一个垂直方向的线性布局包裹你的两个线性布局(如许多评论所示)。在您的情况下,两个线性布局相互重叠,因此您只看到一个。 除非它有足够的项目可以滚动,否则它不能滚动。

查看我的 Repo,

我发现 layout v-17 文件夹下的 activity_detail.xml 被框架使用了,因为我使用的 android:textAlignment="center" 属性仅适用于 API 17+ .我的目标 SDK 是 23。 因此,我发布的布局(在 layout 目录下)只会在 运行 版本的 Android 小于 17.

的设备上显示

如果您打算使用上述属性,请确保在为不同 API 生成的所有布局文件夹中实施您的布局更改。

感谢大家的帮助。