【问题标题】:Putting my edit-text and button in the middle of my layout将我的编辑文本和按钮放在我的布局中间
【发布时间】:2014-12-15 10:18:33
【问题描述】:

我有一个登录页面,该登录页面上有 3 个项目,目前位于页面顶部。我希望这些项目位于页面的中间,而不是位于顶部的位置。这是我目前使用的代码:-

<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".LoginActivity" >

<!-- Login progress -->

<LinearLayout
    android:id="@+id/login_status"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:visibility="gone" >

    <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp" />

    <TextView
        android:id="@+id/login_status_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="16dp"
        android:fontFamily="sans-serif-light"
        android:text="@string/login_progress_signing_in"
        android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>

<!-- Login form -->

<ScrollView
    android:id="@+id/login_form"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        style="@style/LoginFormContainer"
        android:orientation="vertical" >

        <EditText
            android:id="@+id/email"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/prompt_email"
            android:inputType="textEmailAddress"
            android:maxLines="1"
            android:singleLine="true" />

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="@string/prompt_password"
            android:imeActionId="@+id/login"
            android:imeActionLabel="@string/action_sign_in_short"
            android:imeOptions="actionUnspecified"
            android:inputType="textPassword"
            android:maxLines="1"
            android:singleLine="true" />

        <Button
            android:id="@+id/sign_in_button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="right"
            android:layout_marginTop="16dp"
            android:paddingLeft="32dp"
            android:paddingRight="32dp"
            android:text="@string/action_sign_in_register" />
    </LinearLayout>
</ScrollView>

</merge>

【问题讨论】:

    标签: android layout center


    【解决方案1】:

    设置为您的LinearLayout

      android:layout_gravity="center_horizontal|center_vertical"
      android:gravity="center_horizontal|center_vertical"
    

    更正:

    <merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".LoginActivity" >
    
    <!-- Login progress -->
    
    <LinearLayout
        android:id="@+id/login_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:visibility="gone" >
    
        <ProgressBar
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp" />
    
        <TextView
            android:id="@+id/login_status_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dp"
            android:fontFamily="sans-serif-light"
            android:text="login_progress_signing_in"
            android:textAppearance="?android:attr/textAppearanceMedium" />
    </LinearLayout>
    
    <!-- Login form -->
    
    <ScrollView
        android:id="@+id/login_form"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|center_vertical"
            android:gravity="center_horizontal|center_vertical"
            android:orientation="vertical" >
    
            <EditText
                android:id="@+id/email"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="prompt_email"
                android:inputType="textEmailAddress"
                android:maxLines="1"
                android:singleLine="true" />
    
            <EditText
                android:id="@+id/password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="prompt_password"
                android:imeActionId="@+id/login"
                android:imeActionLabel="action_sign_in_short"
                android:imeOptions="actionUnspecified"
                android:inputType="textPassword"
                android:maxLines="1"
                android:singleLine="true" />
    
            <Button
                android:id="@+id/sign_in_button"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginTop="16dp"
                android:paddingLeft="32dp"
                android:paddingRight="32dp"
                android:text="action_sign_in_register" />
        </LinearLayout>
    </ScrollView>
    
    </merge>
    

    输出:

    【讨论】:

    • 我应该如何在我的代码中使用它。我似乎已经尝试过你所说的
    【解决方案2】:

    您可以使用RelativeLayout 代替LinearLayout

    【讨论】:

      【解决方案3】:

      试试这个方法,希望能帮助你解决问题。

      将 LoginFormContainer 布局宽度设置为 match_parent,高度设置为 wrap_content,layout_gravity 设置为 ScrollView 的中心。

      <LinearLayout
         style="@style/LoginFormContainer"
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_gravity="center">
      

      【讨论】:

        【解决方案4】:

        只需编辑你的代码

        <LinearLayout
                style="@style/LoginFormContainer"
                android:orientation="vertical" >
        

        通过

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

        【讨论】:

          【解决方案5】:
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:orientation="vertical" >
          

          对于滚动视图下的&lt;LinearLayout style="@style/LoginFormContainer" android:orientation="vertical"&gt; 添加这一行android:layout_gravity="center" 用于滚动视图下方的线性布局

          【讨论】:

          • 这是针对哪个线性布局的。是登录进度还是登录表单
          • 对于 ScrollView 下的 将这一行 android:layout_gravity="center" 添加到滚动视图下方的线性布局
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-05-10
          • 1970-01-01
          • 2016-09-02
          • 1970-01-01
          • 2021-04-18
          相关资源
          最近更新 更多