Android 我的元素从屏幕流出,它们没有垂直对齐
此布局中的元素从屏幕中流出。我想将它们的大小设置为屏幕的90%。我是XML初学者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="
<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>