LinearLayout,layout_gravity无法正常工作

时间:2016-08-17 11:24:33

标签: android android-layout

我试图在ScrollView中设计一个LinearLayout,因为当键盘被激活时,整个内容将被推高。

XML代码我遇到了以下问题:

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.FET.leonardo.scurcola.NameSelection"
    android:background="#e0ab18">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:text="@string/whoMaster"
        android:textColor="@color/white"
        android:textSize="50sp"
        android:layout_marginTop="25dp"
        android:textAlignment="center"
        android:id="@+id/whoMaster"
        android:layout_gravity="top"
        android:layout_weight="5" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:text="@string/zero"
        android:textSize="50sp"
        android:textColor="@color/white"
        android:id="@+id/playersLeft"
        android:layout_gravity="center"
        android:layout_weight="3"/>

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="0dp"
        android:inputType="textPersonName"
        android:hint="@string/master"
        android:ems="10"
        android:textColorHint="@color/white"
        android:textColor="@color/white"
        android:textColorHighlight="@color/white"
        android:id="@+id/names"
        android:layout_gravity="center"
        android:layout_weight="4" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:layout_gravity="bottom"
        android:orientation="horizontal">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/next"
        android:onClick="onClick"
        android:text="@string/next"
        android:textColor="#e0ab18"
        android:layout_gravity="start|center"
        />


    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/back"
        android:id="@+id/back"
        android:enabled="false"
        android:onClick="onClick"
        android:textColor="#e0ab18"
        android:layout_gravity="end|center"/>

    <Button
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/finish"
        android:visibility="gone"
        android:text="@string/finish"
        android:onClick="onClick"
        android:textColor="#e0ab18"/>
    </LinearLayout>

</LinearLayout>

我不明白为什么第二个LinearLayout内的按钮分别位于startend LinearLayout }}

因此,我想要进行最终设计,但我不知道如何使用LinearLayout实现这一目标: Final achievement

5 个答案:

答案 0 :(得分:2)

试试这段代码。

您可以通过执行类似

的操作来应用多个重力属性
android:layout_gravity="top|center_horizontal"

要将元素本身对齐在其父级中,您必须使用android:layout_gravity来对齐元素的内容,比如文本视图中的文字,您使用android:gravity

如果您的元素之间需要额外的空间,则不必像使用EditText那样为元素提供超过所需的高度。只需添加<Space>元素即可在布局中提供轻量级空格。

这是我将其应用于您的代码的方式:

<?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"
            android:fillViewport="true">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  xmlns:tools="http://schemas.android.com/tools"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:background="#e0ab18"
                  android:orientation="vertical"
                  android:paddingBottom="@dimen/activity_vertical_margin"
                  android:paddingLeft="@dimen/activity_horizontal_margin"
                  android:paddingRight="@dimen/activity_horizontal_margin"
                  android:paddingTop="@dimen/activity_vertical_margin"
                  tools:context="com.FET.leonardo.scurcola.NameSelection">

        <TextView
            android:id="@+id/whoMaster"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="top|center_horizontal"
            android:gravity="center_horizontal"
            android:layout_marginTop="25dp"
            android:layout_weight="5"
            android:text="@string/whoMaster"
            android:textAlignment="center"
            android:textColor="@color/white"
            android:textSize="50sp"/>

        <EditText
            android:id="@+id/names"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:ems="10"
            android:hint="@string/master"
            android:inputType="textPersonName"
            android:textColor="@color/white"
            android:textColorHighlight="@color/white"
            android:textColorHint="@color/white"/>


        <Space
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"/>

        <TextView
            android:id="@+id/playersLeft"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="3"
            android:text="@string/zero"
            android:textColor="@color/white"
            android:textSize="50sp"/>


        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="bottom|center_horizontal"
            android:layout_weight="2"
            android:orientation="horizontal">


            <Button
                android:id="@+id/back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center"
                android:layout_marginRight="12dp"
                android:enabled="false"
                android:onClick="onClick"
                android:text="@string/back"
                android:textColor="#e0ab18"/>

            <Button
                android:id="@+id/next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center"
                android:layout_marginLeft="12dp"
                android:onClick="onClick"
                android:text="@string/next"
                android:textColor="#e0ab18"
                />

            <Button
                android:id="@+id/finish"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="@string/finish"
                android:textColor="#e0ab18"
                android:visibility="gone"/>
        </LinearLayout>

    </LinearLayout>
</ScrollView>

答案 1 :(得分:1)

机器人:windowSoftInputMode =&#34; stateVisible | adjustPan&#34;

在AndroidManifest文件的相应活动中添加此内容。

答案 2 :(得分:0)

layout_gravity旨在与FrameLayout一起使用,并定义在封闭layout_gravity内设置FrameLayout的元素的位置。对于LinearLayout,它将被忽略

答案 3 :(得分:0)

<?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"
    android:fillViewport="true">

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#e0ab18"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.FET.leonardo.scurcola.NameSelection">

        <TextView
            android:id="@+id/whoMaster"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="25dp"
            android:layout_weight="3"
            android:text="who is master"
            android:textAlignment="center"
            android:textColor="@color/white"
            android:textSize="50sp" />

        <EditText
            android:id="@+id/names"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_gravity="center"
            android:layout_weight="3"
            android:ems="10"
            android:gravity="center"
            android:hint="master's name"
            android:inputType="textPersonName"
            android:textColor="@color/white"
            android:textColorHighlight="@color/white"
            android:textColorHint="@color/white" />

        <TextView
            android:id="@+id/playersLeft"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:text="9"
            android:textColor="@color/white"
            android:textSize="50sp" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="2"
            android:gravity="center"
            android:orientation="horizontal">

            <Button
                android:id="@+id/next"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start|center"
                android:onClick="onClick"
                android:text="next"
                android:textColor="#e0ab18" />


            <Button
                android:id="@+id/back"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="end|center"
                android:enabled="false"
                android:onClick="onClick"
                android:text="back"
                android:textColor="#e0ab18" />

            <Button
                android:id="@+id/finish"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="finish"
                android:textColor="#e0ab18"
                android:visibility="gone" />
        </LinearLayout>

    </LinearLayout>
</ScrollView>

检查这是否有帮助。

答案 4 :(得分:0)

  

我在Layout中做了一些修改。 Linear Layoutweights and gravity的第一次Linear Layout更改中的一些修改。同样也在第二个Please apply this modified code in your XML

<?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" android:fillViewport="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="#e0ab18" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <TextView android:id="@+id/whoMaster" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="center" android:layout_marginTop="10dp" android:layout_weight="1" android:gravity="center" android:text="Who's The Master" android:textAlignment="center" android:textColor="#FFFFFF" android:textSize="35sp" /> <EditText android:id="@+id/names" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:ems="10" android:hint="Master" android:inputType="textPersonName" android:textColor="#FFFFFF" android:layout_marginLeft="30dp" android:layout_marginRight="30dp" android:textColorHighlight="#FFFFFF" android:textColorHint="#FFFFFF" /> <TextView android:id="@+id/playersLeft" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_gravity="center" android:layout_marginTop="25dp" android:layout_weight="1" android:gravity="center_vertical" android:text="9" android:textColor="#FFFFFF" android:textSize="35sp" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="0dp" android:layout_gravity="bottom" android:layout_weight="1" android:orientation="horizontal"> <Button android:id="@+id/back" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="end|center" android:layout_weight="0.50" android:enabled="false" android:onClick="onClick" android:text="Back" android:textColor="#e0ab18" /> <Button android:id="@+id/next" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="start|center" android:layout_weight="0.50" android:onClick="onClick" android:text="Next" android:textColor="#e0ab18" /> </LinearLayout> </LinearLayout> </ScrollView>

public class LoggingMigrationDecorator : Migration {
        private Migration _migrationClass;
        public DateTime StartTime { get; private set; }

        public LoggingMigrationDecorator (Migration toDecorate)
                {
                     _migrationClass = toDecorate;
                    this.StartTime = DateTime.Now;
                    Console.WriteLine("Start {0} - TIME: {1:yyyy-MM-dd HH:mm:ss.fff}", this.GetType().Name, StartTime);
                }

                public override void Up()
                {
                 toDecorate.Up();
                 stopTimerFunction(); // your function that will stop timer and do something with result

                }



      public override void Down()
            {
            }
        }
    }

这是屏幕。

enter image description here