此布局中的元素从屏幕流出。我想将它们的大小设置为屏幕的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>
我需要将线性布局中的元素放到列中。
答案 0 :(得分:0)
如果你想让它们占据屏幕的90%,你需要将weightSum
设置为10,将每个元素的layout-weight
设置为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>
答案 1 :(得分:0)
您不能使用&#34; layout_centerVertical&#34;等属性。和&#34; layout_below&#34;使用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>
答案 2 :(得分:0)
首先,不推荐使用fill_parent。如果您想要的是列表宽度和高度覆盖整个屏幕,我建议您使用match_parent。 其次,您在LinearLayout中缺少一些标签。 为了使List宽度覆盖屏幕的90%,您可以通过Activity中的代码来完成,但我建议您使用填充和边距在边缘留下一点空间,它是方式更容易。
这是你在找什么?
<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>
它的外观如下:
答案 3 :(得分:0)
执行此操作,您要告诉LinearLayout
将内部元素分布在列中的水平方向不是90%的相同空间。如果您想这样做,则必须将orientation
设置为vertical,并将paddingRight设置为LinearLayout
。
试试这个:
<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>