2009-09-11 26 views
47

Tôi có một số EditTextButton đặt cạnh nhau trên cùng một đường ngang. Có vẻ tuyệt vời, ngoại trừ khi người dùng nhập nhiều văn bản, EditText được đổi kích thước và Button bị phân loại.Làm cách nào để ngăn một EditText tự thay đổi kích thước khi người dùng đang gõ?

Tôi có cả hai EditTextButton được đặt thành layout_width="wrap_content". "fill_parent" làm rối loạn bố cục và tôi không muốn sử dụng kích thước tuyệt đối nếu tôi không phải - cách mà giờ đây trông tuyệt vời ở cả cảnh quan và chân dung, tôi chỉ không muốn EditText đổi kích thước.

bố trí của tôi:

<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> 

Trả lời

85

Đối EditText sử dụng

android:layout_width="0dp" - not required but preferred. 
android:layout_weight="1" 

Và cho Button không xác định android:layout_weight

+0

Cảm ơn - điều đó đã làm được điều đó! "0dp" có nghĩa gì cho chiều rộng? Rằng nó sẽ mất tất cả không gian có sẵn? –

+1

có, nó sẽ. Thẻ layout_weight sẽ thực hiện điều đó. – bhatt4982

+1

Đừng quên xóa (nếu có) 'android: stretchColumns =" ​​x "' trong 'TableLayout' của bạn, trong đó" x "là vị trí cột chứa' EditText' bạn không muốn tự động thay đổi kích thước. – Caumons

5

Cho EditText một maxWidth. Điều đó sẽ ngăn không cho nó thay đổi kích thước ngoài chiều rộng mà bạn cung cấp. Ngoài ra, nếu bạn muốn nó được chứa trong 1 dòng, hãy đặt cài đặt maxLines thành 1.

+3

Cảm ơn - Tôi không thực sự muốn hardcode một maxWidth cụ thể, vì nó sẽ không giống nhau cho định hướng khác nhau hoặc kích cỡ màn hình. –

+1

+1 cho mẹo trên 'maxLines', nó thực sự là thủ thuật. –

0

Tôi đã có một vấn đề tương tự, nhưng tôi không thể có được ở trên để làm việc. Những gì tôi đã làm, được lấy trong văn bản từ hộp EditText và sau đó định dạng nó xuống đến kích thước tối đa mà màn hình của tôi có thể xử lý. Khi tôi lưu nó vào DB, tôi sẽ lưu nó dưới dạng văn bản hiển thị và văn bản gốc.

Nếu bạn đi to this page Tôi đặt một giải thích dài hơn.

2

Chỉ cần sử dụng:

android:layout_width="fill_parent" 

cho cả EditText và Button. Nó cũng sẽ làm việc thiết lập cho EditText nhưng tốt hơn là có nó trên cả hai.

0

Cách chính xác để thực hiện việc này là đặt android: minWidth và android: maxWidth bằng với chiều rộng bạn muốn. Bằng cách này, bạn sẽ không phải điều chỉnh bố cục của mình để sử dụng android: layout_weight.

Ví dụ, nếu bạn muốn EditText của bạn luôn luôn được 80 mật độ pixel dù có bao nhiêu ký tự mà bạn gõ vào sử dụng như sau:

android:minWidth="80dp" 
android:maxWidth="80dp" 
14

Những gì tôi làm là trong onCreate cho hoạt động này, đo EditText đầu tiên sau đó áp dụng maxWidth của nó.

Bạn có thể làm như vậy sử dụng mã tương tự như sau:

EditText someedittext = (EditText)findViewById(R.id.sometextview); 
someedittext.setMaxWidth(someedittext.getWidth()); 
+1

Giải pháp tốt hơn! –

+0

Cảm ơn rất nhiều người đàn ông ... không có người nào làm việc cho tôi nhưng điều này. – kgandroid

1

bạn có thể xác định kích thước của EditText của bạn vì nó cho thấy trên

android:minWidth="80dp" 
android:maxWidth="80dp" 

hoặc

android:layout_width="60dp" 

hoặc

bạn có thể áp dụng hình nền có kích thước bạn muốn nhưng đừng quên xác định chiều cao và chiều rộng của nó với wrap_content.

android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
0

Tôi đã có truy vấn chính xác. Nhưng tôi đã có một EditText và một Button bên cạnh nhau trong Linear Layout. Tôi đã thử android: layout_weight = "1" cho EditText android: layout_width = "0dp" Và nó hoạt động hoàn hảo !! Cảm ơn rất nhiều!

1

enter image description here

Bạn cần phải thêm android: imeOptions để ngăn chặn hành vi này.

Click here

Các vấn đề liên quan