Android 我的元素从屏幕流出,它们没有垂直对齐

Android 我的元素从屏幕流出,它们没有垂直对齐,android,xml,android-linearlayout,Android,Xml,Android Linearlayout,此布局中的元素从屏幕中流出。我想将它们的大小设置为屏幕的90%。我是XML初学者 <LinearLayout android:id="@+id/login_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_centerVertical="true" android:layout_centerHorizontal="

此布局中的元素从屏幕中流出。我想将它们的大小设置为屏幕的90%。我是XML初学者

<LinearLayout
    android:id="@+id/login_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:weightSum="1.0">
    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="0.8"
        android:text="Username"
        android:textColor="#FFFFFF" />
    <EditText
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/username"
        android:layout_weight="0.8"
        android:inputType="text" />
    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/first"
        android:layout_weight="0.8"
        android:inputType="textPassword" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/password"
        android:layout_weight="0.8"
        android:text="@string/login_button" />
</LinearLayout>


我需要将线性布局中的元素放到列中。

如果你想让它们占据90%的屏幕,你需要将
权重总和
设置为10,将每个元素的
布局权重
设置为2.25,以便让10%的屏幕空闲

<LinearLayout
    android:id="@+id/login_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:weightSum="10">
    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2.25"
        android:text="Username"
        android:textColor="#FFFFFF" />
    <EditText
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/username"
        android:layout_weight="2.25"
        android:inputType="text" />
    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/first"
        android:layout_weight="2.25"
        android:inputType="textPassword" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/password"
        android:layout_weight="2.25"
        android:text="@string/login_button" />
</LinearLayout>

如果您想让它们占据90%的屏幕,您需要将
权重总和
设置为10,将每个元素的
布局权重
设置为2.25,以便让10%的屏幕空闲

<LinearLayout
    android:id="@+id/login_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
    android:weightSum="10">
    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="2.25"
        android:text="Username"
        android:textColor="#FFFFFF" />
    <EditText
        android:id="@+id/login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/username"
        android:layout_weight="2.25"
        android:inputType="text" />
    <EditText
        android:id="@+id/password"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/first"
        android:layout_weight="2.25"
        android:inputType="textPassword" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/password"
        android:layout_weight="2.25"
        android:text="@string/login_button" />
</LinearLayout>

不能将“布局中心垂直”和“布局下方”等属性与线性布局一起使用。它们与RelativeLayout一起使用。 您可以使用以下命令实现布局

<LinearLayout
    android:id="@+id/login_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="10"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:text="Username"
        android:textColor="#FFFFFF" />
    <EditText
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:inputType="text" />
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:inputType="textPassword" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:text="@string/login_button" />
</LinearLayout>

不能将“布局中心垂直”和“布局下方”等属性与线性布局一起使用。它们与RelativeLayout一起使用。 您可以使用以下命令实现布局

<LinearLayout
    android:id="@+id/login_layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:weightSum="10"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:text="Username"
        android:textColor="#FFFFFF" />
    <EditText
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:inputType="text" />
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:inputType="textPassword" />
    <Button
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2.25"
        android:text="@string/login_button" />
</LinearLayout>

首先,不推荐使用填充父项。如果您希望列表的宽度和高度覆盖整个屏幕,我建议您使用match_parent。 其次,在LinearLayout中缺少一些标记。 为了使列表宽度覆盖90%的屏幕,您可以在活动中通过代码来完成,但我建议您使用填充和边距在边缘留出一点空间,这样更容易

这就是你要找的吗

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:id="@+id/login_layout"
    android:padding="20dp"
    android:gravity="center" >
        <TextView
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:hint="Username"
            android:gravity="center_vertical"
            android:textColor="#FFFFFF" />
        <EditText
            android:id="@+id/login"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:hint="Login"
            android:inputType="text" />
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:hint="Password"
            android:inputType="textPassword" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="Login" />
</LinearLayout>

这就是它的样子:


首先,不推荐使用填充父对象。如果您希望列表的宽度和高度覆盖整个屏幕,我建议您使用match_parent。 其次,在LinearLayout中缺少一些标记。 为了使列表宽度覆盖90%的屏幕,您可以在活动中通过代码来完成,但我建议您使用填充和边距在边缘留出一点空间,这样更容易

这就是你要找的吗

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:id="@+id/login_layout"
    android:padding="20dp"
    android:gravity="center" >
        <TextView
            android:id="@+id/username"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:hint="Username"
            android:gravity="center_vertical"
            android:textColor="#FFFFFF" />
        <EditText
            android:id="@+id/login"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:hint="Login"
            android:inputType="text" />
        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:hint="Password"
            android:inputType="textPassword" />
        <Button
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="Login" />
</LinearLayout>

这就是它的样子:


执行此操作时,您要告诉
LinearLayout
将元素以相同的空间分布在内部,而不是在列中水平分布90%。如果要这样做,必须将
方向设置为垂直,并将一些paddingRight设置为
线性布局

试试这个:

<LinearLayout android:id="@+id/login_layout" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:layout_centerVertical="true" 
  android:layout_centerHorizontal="true"
  android:orientation="vertical" 
  android:gravity="right" 
  android:weightSum="1.0"
  android:paddingRight="20dp">
  <TextView android:id="@+id/username" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"  
    android:text="Username" 
    android:textColor="#FFFFFF" 
  />
  <EditText 
    android:id="@+id/login" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/username"  
    android:inputType="text" 
  /> 
  <EditText 
    android:id="@+id/password" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/first" 
    android:inputType="textPassword" 
  />
  <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/password"  
    android:text="@string/login_button" 
  />
</LinearLayout>

执行此操作时,您要告诉
线性布局
将元素以相同的空间分布在内部,而不是在列中水平分布90%。如果要这样做,必须将
方向设置为垂直,并将一些paddingRight设置为
线性布局

试试这个:

<LinearLayout android:id="@+id/login_layout" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:layout_centerVertical="true" 
  android:layout_centerHorizontal="true"
  android:orientation="vertical" 
  android:gravity="right" 
  android:weightSum="1.0"
  android:paddingRight="20dp">
  <TextView android:id="@+id/username" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"  
    android:text="Username" 
    android:textColor="#FFFFFF" 
  />
  <EditText 
    android:id="@+id/login" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/username"  
    android:inputType="text" 
  /> 
  <EditText 
    android:id="@+id/password" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/first" 
    android:inputType="textPassword" 
  />
  <Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/password"  
    android:text="@string/login_button" 
  />
</LinearLayout>