可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have an EditText
and a Button
set next to each other on the same horizontal line. It looks great, except when the user enters a lot of text, the EditText
is resized, and the Button
is squished.
I have both EditText
and Button
set to layout_width="wrap_content"
. "fill_parent"
messes up the layout, and I don't want to use absolute sizes if I don't have to - the way it is now looks great in both landscape and portrait, I just don't want the EditText
to resize.
My layout:
<TableLayout
android:id="@+id/homelayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TableRow>
<TextView
android:id="@+id/labelartist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Find artists:" />
</TableRow>
<TableRow>
<EditText
android:id="@+id/entryartist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="6"
android:background="@android:drawable/editbox_background"
android:editable="true"
android:padding="5px"
android:singleLine="true" />
<Button
android:id="@+id/okartist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dip"
android:layout_weight="1"
android:text="Search" />
</TableRow>
</TableLayout>
回答1:
For EditText use
android:layout_width="0dp" - not required but preferred.
android:layout_weight="1"
And for Button dont specify android:layout_weight
回答2:
What I do is in the onCreate for the activity, measure the EditText first then apply its maxWidth.
You can do so using code similar to the following:
EditText someedittext = (EditText)findViewById(R.id.sometextview);
someedittext.setMaxWidth(someedittext.getWidth());
回答3:
Give EditText
a maxWidth
. That should stop it from resizing beyond the width you provided. Also, if you want it to be contained within 1 line set the maxLines
setting to 1 too.
回答4:
Just use:
android:layout_width="fill_parent"
for both EditText and Button. It will also work set for EditText but it is better to have it on both.
回答5:
You need to add android:imeOptions to prevent this behavior.
Click here
回答6:
you can define size of your edittext as it shows above
android:minWidth="80dp"
android:maxWidth="80dp"
or
android:layout_width="60dp"
or
you can apply a background image of size you want
but don't forget to define its height and width
with wrap_content.
android:layout_width="wrap_content"
android:layout_height="wrap_content"
回答7:
I had a similar problem, but I couldn't get the above to work. What I did, is take in the text from EditText box and then format it down to the max size that my screen could handle. When I save this off to the DB, I will save it as display Text and original text.
If you go to this page I put a longer explanation.
回答8:
The correct way to do this would be to set the android:minWidth and android:maxWidth equal to the width you want. This way you will not have to adjust your layout to use the android:layout_weight.
For example if you want your EditText to always be 80 density pixels no matter how many characters you type in use the following:
android:minWidth="80dp"
android:maxWidth="80dp"
回答9:
I had the exact query. But i had an EditText and a Button next to each other in a Linear Layout.
I tried android:layout_weight="1" for EditText
android:layout_width="0dp"
And it worked just perfect!!
Thanks a lot!
回答10:
The chosen solution works, but let me add a little complement:
if you use
android:layout_weight="0.15"
(the value is not important)
then
android:layout_width="0dp"
if the LinearLayout
is Horizontal
or
android:layout_height="0dp"
if the LinearLayout
is Vertical.