【问题标题】:Android: Align LinearLayout center for all screen sizesAndroid:为所有屏幕尺寸对齐 LinearLayout 中心
【发布时间】:2013-01-04 03:43:27
【问题描述】:

我想为我的登录屏幕设计一个布局,我尝试了以下代码。使用一些硬编码的值,我得到了一些屏幕尺寸的中心绿色布局中心。我知道使用硬编码值不适用于不同的屏幕尺寸。我在 SO 上尝试了很多东西。请给我最好的方法

<?xml version="1.0" encoding="utf-8"?>

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

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/register_header"
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/title_image"
            android:layout_width="wrap_content"
            android:layout_height="40dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:src="@drawable/logo_blue" />


    </RelativeLayout>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         android:layout_marginLeft="150dp"
        android:layout_marginRight="150dp"
        android:layout_marginTop="50dp"
        android:layout_marginBottom="50dp"
        android:orientation="vertical" >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/UserInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/WelcomeInfo"
            android:gravity="center_vertical"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/user"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="User Name"
                android:textColor="#000000"
                android:textSize="10pt"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/username"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:hint="Enter username"
                android:singleLine="true"
                android:textColor="#000000" >
            </EditText>
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/PassInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/UserInfo"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/pwd"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Password"
                android:textColor="#000000"
                android:textSize="10pt"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/password"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:hint="Enterpassword"
                android:singleLine="true"
                android:textColor="#000000" />
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/StoreNumInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/WelcomeInfo"
            android:gravity="center_vertical"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/num"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Store Number"
                android:textColor="#000000"
                android:textSize="10pt"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/store_num"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:hint="Enter the Store number"
                android:imeOptions="actionDone"
                  android:password="true"

                android:textColor="#000000" >
            </EditText>
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/Options"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/PassInfo"
            android:orientation="horizontal" >

            <CheckBox
                android:id="@+id/signed_in"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Stay Signed-in"
                android:textColor="#000000" />


            <Button
                android:id="@+id/login"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Login"
                android:textSize="28dp"
                android:textStyle="bold" />
        </LinearLayout>


    </LinearLayout>
</LinearLayout> </ScrollView>

【问题讨论】:

  • 我只想要中间的绿色区域
  • 你想要绿色的布局在中心?
  • 是的,我想要那个绿色的布局在中心

标签: android android-layout android-widget


【解决方案1】:

将绿色布局的封面用作RelativeLayout。然后像这样定义你的greenLayout。 android:layout_centerHorizontal="true" android:layout_centerVertical="true"

看看我的xml它可以使所有屏幕居中

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

<LinearLayout
    android:id="@+id/lin_all"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:orientation="vertical" >
</LinearLayout>

</RelativeLayout>

【讨论】:

  • 我收到此警告消息“此 LinearLayout 布局或其 RelativeLayout 父级无用”
  • 因为你的布局在滚动视图的线性中,我不知道它是否可以滚动视图的线性中心。但这是我所做的没有Scrollview。 pastie.org/5619676
  • 它在大屏幕上工作正常,我在小屏幕上测试它。
  • 小屏看不到最后一个登录按钮
  • 我想你可能会喜欢这个。androidhive.info/2011/10/…
【解决方案2】:

试试这个:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical" >

// put all your xml code here


    </LinearLayout>

试试修改后的代码:

新编辑:

<?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:gravity="center"
    android:orientation="vertical" 
    android:weightSum="1">


   <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/register_header"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="0.1"
        android:orientation="horizontal" >

        <ImageView
            android:id="@+id/title_image"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:layout_marginBottom="5dp"
            android:layout_marginTop="5dp"
            android:gravity="center"
            android:src="@drawable/logo_blue"  />


    </RelativeLayout>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_weight="0.9"
        android:gravity="center"
        android:orientation="vertical" >

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/UserInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/WelcomeInfo"
            android:gravity="center_vertical"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/user"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="User Name"
                android:textColor="#000000"
                android:textSize="10pt"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/username"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:hint="Enter username"
                android:singleLine="true"
                android:textColor="#000000" >
            </EditText>
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/PassInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/UserInfo"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/pwd"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Password"
                android:textColor="#000000"
                android:textSize="10pt"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/password"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:hint="Enterpassword"
                android:singleLine="true"
                android:textColor="#000000" />
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/StoreNumInfo"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/WelcomeInfo"
            android:gravity="center_vertical"
            android:orientation="horizontal" >

            <TextView
                android:id="@+id/num"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Store Number"
                android:textColor="#000000"
                android:textSize="10pt"
                android:textStyle="bold" />

            <EditText
                android:id="@+id/store_num"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:hint="Enter the Store number"
                android:imeOptions="actionDone"
                  android:password="true"

                android:textColor="#000000" >
            </EditText>
        </LinearLayout>

        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/Options"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/PassInfo"
            android:orientation="horizontal" >

            <CheckBox
                android:id="@+id/signed_in"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Stay Signed-in"
                android:textColor="#000000" />


            <Button
                android:id="@+id/login"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1"
                android:text="Login"
                android:textSize="28dp"
                android:textStyle="bold" />
        </LinearLayout>


    </LinearLayout>
</LinearLayout>

【讨论】:

  • 执行此操作后得到什么输出。您可以发布屏幕截图
  • 在编辑代码中,您使用了一些硬编码值,我认为您没有发布正确的代码,它具有以下我使用的 android:layout_width="fill_parent" android:layout_height="fill_parent" android: layout_marginTop="50dp" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="50dp"
  • 现在我得到了你的要求。试试新编辑的代码,它肯定对你有用。我在这里使用了权重属性。它与屏幕尺寸无关
  • 这是您要找的吗?如果您执行了 EDIT 代码,请告诉我。
  • 这是否有可能避免marginleft和right的硬编码值
【解决方案3】:

要在不同的屏幕尺寸下工作,我建议您根据屏幕尺寸创建不同的 xml 文件........您可以在这里查看 http://developer.android.com/guide/practices/screens_support.html...

【讨论】:

    【解决方案4】:

    试试这个 XML 代码,它会解决你的问题。

    <?xml version="1.0" encoding="utf-8"?>
    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    
        <LinearLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical"
            android:orientation="vertical" >
    
            <RelativeLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/register_header"
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:orientation="horizontal" >
    
                <ImageView
                    android:id="@+id/title_image"
                    android:layout_width="wrap_content"
                    android:layout_height="40dp"
                    android:layout_centerHorizontal="true"
                    android:layout_centerVertical="true"
                    android:layout_marginBottom="5dp"
                    android:layout_marginTop="5dp"
                    android:gravity="center"
                    android:src="@drawable/ic_launcher" />
            </RelativeLayout>
    
            <LinearLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical" >
    
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/UserInfo"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal" >
    
                    <TextView
                        android:id="@+id/user"
                        android:layout_width="match_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:text="User Name"
                        android:textColor="#000000"
                        android:textSize="10pt"
                        android:textStyle="bold" />
    
                    <EditText
                        android:id="@+id/username"
                        android:layout_width="match_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:hint="Enter username"
                        android:singleLine="true"
                        android:textColor="#000000" >
                    </EditText>
                </LinearLayout>
    
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/PassInfo"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/UserInfo"
                    android:orientation="horizontal" >
    
                    <TextView
                        android:id="@+id/pwd"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:text="Password"
                        android:textColor="#000000"
                        android:textSize="10pt"
                        android:textStyle="bold" />
    
                    <EditText
                        android:id="@+id/password"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:hint="Enterpassword"
                        android:singleLine="true"
                        android:textColor="#000000" />
                </LinearLayout>
    
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/StoreNumInfo"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/WelcomeInfo"
                    android:gravity="center_vertical"
                    android:orientation="horizontal" >
    
                    <TextView
                        android:id="@+id/num"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:text="Store Number"
                        android:textColor="#000000"
                        android:textSize="10pt"
                        android:textStyle="bold" />
    
                    <EditText
                        android:id="@+id/store_num"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:hint="Enter the Store number"
                        android:imeOptions="actionDone"
                        android:password="true"
                        android:textColor="#000000" >
                    </EditText>
                </LinearLayout>
    
                <LinearLayout
                    xmlns:android="http://schemas.android.com/apk/res/android"
                    android:id="@+id/Options"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/PassInfo"
                    android:orientation="horizontal" >
    
                    <CheckBox
                        android:id="@+id/signed_in"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:text="Stay Signed-in"
                        android:textColor="#000000" />
    
                    <Button
                        android:id="@+id/login"
                        android:layout_width="fill_parent"
                        android:layout_height="fill_parent"
                        android:layout_weight="1"
                        android:text="Login"
                        android:textSize="28dp"
                        android:textStyle="bold" />
                </LinearLayout>
            </LinearLayout>
        </LinearLayout>
    
    </ScrollView>
    

    【讨论】:

      【解决方案5】:

      在父 LinearLayout 中,添加这个

      android:orientation="vertical"
      android:gravity="center"
      

      .

      【讨论】:

        【解决方案6】:

        我的解决方案

        <?xml version="1.0" encoding="utf-8"?>
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            android:layout_width="match_parent"
            android:orientation="vertical"
            android:gravity="center_vertical"
            android:layout_height="match_parent"
            tools:context=".MainActivity">
        
           <Button
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:layout_gravity="center"
               android:text="Sample Button"
               />
        
        
        </LinearLayout>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-05-20
          • 1970-01-01
          • 2021-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多