2012-05-19 35 views
5

Tôi cố gắng để chèn một TextView bên trong một EditText như trong dướichèn textview bên trong edittext trong android?

enter image description here

pls bất cứ ai có thể cho tôi ý tưởng về làm thế nào để thực hiện nó hoặc một cái gì đó.

nhờ :)

update: TextView trong EditText sẽ thay đổi năng động.

+0

Điều đó không giống như một bản xem trước đơn giản bên trong văn bản chỉnh sửa .. Loại xem 'PopupWindow' của nó là – Ronnie

Trả lời

2

Tôi nghĩ bạn không thể đặt TextView bên trong EditText. Nhưng cách khác bạn có thể làm cho nó trông như vậy. Dưới đây là các bước

  1. convert TextView để BitmapDrawable
  2. convert bitmap drawable vào SpanableString (ImageSpan)
  3. sau đó thiết lập này trở SpannableString để bạn EditText

Gần đây tôi đã hoàn thành loại ui và tôi đã giải thích trong blog của tôi Making GoSmsPro/Evernote like EditText

+0

tôi đang sử dụng mã của bạn trong một dự án của tôi nhưng tôi nhận được một số vấn đề và không nhận được bất kỳ giải pháp .... bạn có thể xem nó cung cấp cho tôi một số gợi ý http://stackoverflow.com/questions/20780685/how -set-margin-between-spannable-textview –

3

Hãy thử mã mẫu này. Nó phù hợp với yêu cầu của bạn.

PopupWindow pw = new PopupWindow(
           this.getViewInflate().inflate(R.layout.pw_layout, 
                   null, true, null), 
           100,100,true); 
// display the popup in the center 
pw.showAtLocation(layout, Gravity.CENTER, 0, 0); 
pw.update(20,20,100,100); 

Đối với chế độ xem bên trong EditText một phần, bạn sẽ phải gia hạn EditText. Tổng quan về cách nó sẽ trông như sau.

class emailEditText extends EditText { 

List<NamePhotoView> ViewlistOfSelectedContacts; // create new 

    void addContact(String name, Bitmap photo) { 
     // create a new 'NamePhotoView' and add to the ViewlistOfSelectedContacts 
    } 

    @Override 
    void onDraw(Canvas canvas) { 
     for (....) { 
      // draw all views from the list. left to right. 
     } 
    // you have to some how offset the text start coordinate. then call super 
    super.onDraw(canvas); 
    } 
} 
+0

mã trên là ok cho hộp bật lên. nhưng những gì tôi có thể làm để có được những bản xem trước "kanna" và "susse" trong edittext "To" ?? – kAnNaN

+0

Điều đó trông giống như một điều khiển Edittext tùy chỉnh .. mở rộng 'EdiText' .. – Ronnie

+0

Tôi đã trả lời câu trả lời của tôi. – Ronnie

1

bạn có thể tạo thành phần dựa trên những gì bạn cần như bạn đã đề cập ở trên với bố cục khung. Bạn có thể có FrameLayout hoặc RelativeLayout với hai chế độ xem như EditText và TextView trong khi chế độ xem văn bản ở trên EditText. bạn cũng có thể đặt hình ảnh xem nếu bạn muốn ở bên phải như hình ảnh của bạn.

Mặc dù bạn không cần phải tạo thành phần và dễ dàng bạn có thể thực hiện điều này trong bố cục XML, nếu bạn có kế hoạch sử dụng nó thường xuyên thông qua ứng dụng của bạn.

+0

nếu có thể, bạn có thể cho tôi một ví dụ hoặc bất kỳ liên kết nào mà tôi có thể tham khảo. – kAnNaN

+0

Bạn có thể tham khảo: 1) http://developer.android.com/guide/topics/ui/custom-components.html 2) http://developer.android.com/resources/articles/layout-tricks-reuse .html – Hesam

+0

Và thực tế một: http: // thiranjith.com/2011/07/15/actionbar-design-pattern-example-cho-android/Mặc dù chủ đề này liên quan đến thiết kế thanh Hành động, bạn có thể có ý tưởng cách tạo thành phần có thể sử dụng lại dựa trên. – Hesam

2

T theo cách của mình, Android thực hiện nó, cái gọi là Chip giao diện người dùng, có thể được tìm thấy here.
Về cơ bản đó là tùy chỉnh span vẽ các thành phần (hình ảnh, văn bản, v.v.) trên văn bản, cộng với một số logic để hiển thị cửa sổ bật lên.

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