我想在同一行放置一个TextView,Edittext和一个按钮,但我遇到的问题是按钮没有正确对齐到左边,在小屏幕中,edittext填充整个。
小屏幕:
大银幕:
我的编纂如下:
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/address_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/address_textview"
android:textStyle="bold" />
<EditText
android:id="@+id/address_edittext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/address_textview_hint"
android:imeActionLabel="@string/search_button"
android:imeOptions="actionDone"
android:inputType="textCapWords"
android:nextFocusDown="@id/address_edittext"
android:nextFocusUp="@id/address_edittext"
android:singleLine="true" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="right" >
<Button
android:id="@+id/go_button"
android:layout_width="50dp"
android:layout_height="35dp"
android:text="Go" />
</RelativeLayout>
</LinearLayout>
答案 0 :(得分:6)
对EditText应用权重,这样它就会占用尽可能多的空间,同时让其他两个元素执行正常的wrap_content。为此,删除相对布局容器,然后将EditText宽度更改为“0dp”并为其指定layout_weight为“1”,如下所示:
<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/address_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/address_textview"
android:textStyle="bold" />
<EditText
android:id="@+id/address_edittext"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:hint="@string/address_textview_hint"
android:imeActionLabel="@string/search_button"
android:imeOptions="actionDone"
android:inputType="textCapWords"
android:nextFocusDown="@id/address_edittext"
android:nextFocusUp="@id/address_edittext"
android:singleLine="true" />
<Button
android:id="@+id/go_button"
android:layout_width="50dp"
android:layout_height="35dp"
android:text="Go" />
</LinearLayout>
答案 1 :(得分:4)
首先,很多人会告诉你hint
是Android的解决方案,不需要标签。我不在乎您是否使用标签,但它确实可以节省空间,特别是在较小的屏幕上。那只是一个FYI。
现在,只有RelativeLayout
的{{1}}似乎没用了......我会将其删除。您可以使用Button
,以便每个layout_weight
占用适当的空间。确保制作View
。所以它可能看起来像
layout_width="0dp"
我在这里分别使用2,3,1代表<LinearLayout
android:id="@+id/layout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/address_textview"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:gravity="center"
android:text="@string/address_textview"
android:textStyle="bold" />
<EditText
android:id="@+id/address_edittext"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:hint="@string/address_textview_hint"
android:imeActionLabel="@string/search_button"
android:imeOptions="actionDone"
android:inputType="textCapWords"
android:nextFocusDown="@id/address_edittext"
android:nextFocusUp="@id/address_edittext"
android:singleLine="true" />
<Button
android:id="@+id/go_button"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:text="Go" />
</LinearLayout>
,weights
和TextView
的{{1}}。您可能需要更改这些内容以获得您想要的内容,但这应该会给您一个开始。
答案 2 :(得分:2)
布局权重是设计适应屏幕尺寸的布局的理想选择。但是,请确保将layout_width设置为0dp,否则将无法正常工作。
像这样使用:
android:layout_width="0dp"
android:layout_weight="1"
答案 3 :(得分:1)
我会假设你的意思是按钮没有正确对齐。
这是因为您的RelativeLayout的android:width="wrap_content"
,但它应该是android:width="match_parent"
。
此外,您最好设置EditText的android:width="0dp"
并添加android:weight="1"
,以便在屏幕尺寸之间扩展/缩小。