Android - Layout_gravity =" Bottom"没有在屏幕上结束

时间:2017-03-19 16:21:13

标签: android xml android-linearlayout

我在使用LinearLayout时遇到了愚蠢的问题。 我在setContentView之前请求NO_TITLE功能,我的Xaml看起来像这样:

<LinearLayout
android:baselineAligned="false"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#E600323d"
tools:context="mycontext.Activities.dialogSignal"
android:layout_alignParentBottom="true"
android:gravity="center"
>

<TextView
    android:id="@+id/textView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:text="SOME TEXT"
    android:textAlignment="center"
    android:textColor="@color/LightBlue"
    android:textSize="30sp"
    app:layout_heightPercent="10%"/>

<!-- FIRST ROW -->

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:onClick="bruitNavigate"
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="@string/SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="@string/SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

</LinearLayout>

<!-- SECOND ROW -->

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="@string/SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

</LinearLayout>

<!-- THIRD ROW -->

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

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingTop="10dp"
            android:text="@string/SomeString"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:textSize="15sp"/>
    </LinearLayout>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        >
        <ImageButton
            android:src="@drawable/someDrawable"
            android:scaleType="fitCenter"
            android:background="@android:color/transparent"
            android:contentDescription="@string/descriptionContentSignal"
            android:layout_width="match_parent"
            android:layout_height="90dp"/>

        <TextView
            android:paddingTop="10dp"
            android:text="SomeString"
            android:textSize="15sp"
            android:textAlignment="center"
            android:textColor="@color/LightBlue"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <Space
        android:layout_width="0dp"
        android:layout_height="120dp"
        android:layout_weight="1"
        />

</LinearLayout>

<LinearLayout
    android:baselineAligned="false"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_alignParentBottom="true"
    android:gravity="center"
    >

    <ImageButton
        android:id="@+id/imageButton"
        android:layout_width="150dp"
        android:layout_height="85dp"
        android:layout_gravity="bottom|center"
        android:background="@android:color/transparent"
        android:scaleType="fitCenter"
        android:src="@drawable/centralbutton"/>

    <ImageButton
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_gravity="center_vertical"
        android:background="@android:color/transparent"
        android:contentDescription="@string/accept"
        android:onClick="closeView"
        android:scaleType="fitCenter"
        android:src="@drawable/cancel"
        />
</LinearLayout>
</LinearLayout>

因此,最后一个LinearLayout(仅包含两个ImageButtons)不会与屏幕底部对齐,而是根据屏幕大小浮动。

我应用这种风格来获得透明背景:

    <style name="dialogStyle" parent="@android:style/Theme.Holo">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:backgroundDimEnabled">true</item>
    </style>

如果有人遇到同样的问题,我很想得到想法...... 谢谢你的时间!

2 个答案:

答案 0 :(得分:0)

如果要将布局设置为底部,请使用RelativeLayout作为父级并相应地设置视图。或者您可以使用LinearLayout和重量,您需要根据屏幕尺寸自动将重量1设置为中间布局,顶部和底部设置。

LinearLayout的布局权重:请参阅https://developer.android.com/guide/topics/ui/layout/linear.html

RelativeLayout:参考https://developer.android.com/reference/android/widget/RelativeLayout.html

答案 1 :(得分:0)

在上一次Linearlayout高度为match parent

时尝试此操作
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="bottom"
    android:baselineAligned="false"
    android:gravity="center">

</LinearLayout>

 <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom"
    android:layout_weight="1"   //add this
    android:baselineAligned="false"
    android:gravity="center">

<强>解释

LinearLayout内的所有项目占用一些空间,请确保包含按钮的最后一项LinearLayout拉伸以占用所有剩余空间。设置android:layout_weight="1"或设置高度match_parent