如何将LinearLayout放在屏幕底部并且不与另一个LinearLayout重叠?

时间:2014-12-12 15:15:00

标签: android android-layout android-linearlayout android-relativelayout

我有ScrollView,里面我有RelativeLayout,而在RelativeLayout里面我有2个LinearLayouts。它看起来像这样:

ScrollView
     RelativeLayout
          LinearLayout1
          LinearLayout2 

我希望我的LinearLayout2位于屏幕底部,它不应与LinearLayout1重叠。当我包含行android:layout_alignParentBottom="true"时,它显示它和底部,但是当TextView更长时,LinearLayout2与LinearLayout1重叠。当我还包含行android:layout_below="@+id/linearLayout"时,它将LinearLayout2置于LinearLayout1下方,但不会将其置于底部。这是我的代码:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:background="@drawable/background">

    <RelativeLayout
        android:layout_width="fill_parent"
        android:background="#4D000000"
        android:layout_height="fill_parent">

        <LinearLayout xmlns:tools="http://schemas.android.com/tools"
            xmlns:custom="http://schemas.android.com/apk/res-auto"
            android:layout_width="fill_parent"
            android:id="@+id/linearLayout"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:paddingTop="?attr/actionBarSize"
            android:padding="5dp"
            tools:context="com.daimajia.slider.demo.MainActivity">

            <com.daimajia.slider.library.SliderLayout
                android:id="@+id/slider"
                android:layout_width="match_parent"
                custom:pager_animation="Default"
                custom:indicator_visibility="visible"
                custom:pager_animation_span="1100"
                android:layout_height="200dp" />

            <com.daimajia.slider.library.Indicators.PagerIndicator
                android:id="@+id/custom_indicator"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                custom:selected_color="#0095BF"
                custom:unselected_color="#55333333"
                custom:shape="oval"
                custom:selected_padding_left="5dp"
                custom:selected_padding_right="5dp"
                custom:unselected_padding_left="5dp"
                custom:unselected_padding_right="5dp"
                custom:selected_width="6dp"
                custom:selected_height="6dp"
                custom:unselected_width="6dp"
                custom:unselected_height="6dp" />

            <com.daimajia.slider.library.Indicators.PagerIndicator
                android:id="@+id/custom_indicator2"
                style="@style/AndroidImageSlider_Corner_Oval_Orange"
                android:layout_marginBottom="10dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content" />

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">

                <TextView
                    android:id="@+id/address"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Konstitucijos pr. 7A, Vilnius"
                    android:textColor="#FFFFFF" />

                <ImageButton
                    android:id="@+id/pin"
                    android:layout_width="32dp"
                    android:layout_height="32dp"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="5dp"
                    android:background="@drawable/pin" />
            </RelativeLayout>

            <View
                android:id="@+id/divider1"
                android:layout_width="fill_parent"
                android:layout_height="1dp"
                android:background="#433b39"
                android:layout_marginTop="10dp" />

            <TextView
                android:id="@+id/work_hours"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="I - VI 10:00 - 21:00, VII 10:00 - 20:00"
                android:textColor="#FFFFFF"
                android:layout_marginTop="10dp" />

            <View
                android:id="@+id/divider2"
                android:layout_width="fill_parent"
                android:layout_height="1dp"
                android:background="#433b39"
                android:layout_marginTop="10dp" />

            <TextView
                android:id="@+id/description"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:textColor="#FFFFFF" />

            <FrameLayout
                android:id="@+id/frame_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content">

                <fragment
                    android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
                    android:id="@+id/youtube_fragment"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" />
            </FrameLayout>

            <View
                android:id="@+id/divider3"
                android:layout_width="fill_parent"
                android:layout_height="1dp"
                android:background="#575350"
                android:layout_marginTop="10dp" />

            <RelativeLayout
                android:layout_width="fill_parent"
                android:id="@+id/rl"
                android:layout_height="wrap_content">

                <RatingBar
                    android:id="@+id/ratingBar"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerInParent="true"
                    android:numStars="5"
                    android:stepSize="1.0"
                    android:rating="0" />

                <TextView
                    android:layout_width="fill_parent"
                    android:id="@+id/rating_text"
                    android:layout_below="@+id/ratingBar"
                    android:layout_height="wrap_content"
                    android:gravity="center" />

            </RelativeLayout>

            <View
                android:id="@+id/divider4"
                android:layout_width="fill_parent"
                android:layout_height="1dp"
                android:background="#575350" />
        </LinearLayout>

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_alignParentBottom="true"
            android:layout_below="@+id/linearLayout"
            android:orientation="horizontal"
            android:weightSum="1.0">

            <ImageView
                android:id="@+id/number"
                android:layout_height="wrap_content"
                android:layout_weight=".5"
                android:layout_width="0dip"
                android:src="@drawable/telefonas" />

            <ImageView
                android:id="@+id/email"
                android:layout_height="wrap_content"
                android:layout_weight=".5"
                android:layout_width="0dip"
                android:src="@drawable/laiskas" />
        </LinearLayout>
    </RelativeLayout>
</ScrollView>

我做错了什么?

3 个答案:

答案 0 :(得分:1)

您目前正在为底部布局分配android:layout_below,将其删除并将android:layout_above分配给上面的布局。

由于你在ScrollView中,最好这样做:

保持android:layout_below不变,但删除android:layout_alignParentBottom="true"

答案 1 :(得分:0)

我发现了两件事。第一个是你使用fill_parent而不是match_parent。如果我没有弄错的话,两者是相同的,但第一个是弃用的 第二个是你没有在第一个LinearLayout中指定android:layout_alignParentTop。尝试改变这两件事,看看他们是否解决了你的问题

答案 2 :(得分:0)

我用@PedroHawk的帮助解决了这个问题。我只需要将这些布局的层次结构更改为:

ScrollView
     LinearLayout1
          RelativeLayout
              LinearLayout2