2012-12-26 35 views
10

Tôi hiện đang phát triển một ứng dụng với Samsung Galaxy Tab 2 làm thiết bị của mình.Buộc toàn màn hình trên EditText trong Android

Mã của tôi trong XML là:

<EditText 
    android:id="@+id/analysis_text" 
    style="@style/icon_text" 
    android:imeOptions="actionDone" 
    android:inputType="textMultiLine" 
    android:onClick="onBtnClicked" 
/> 

Khi mã này thực thi, đầy đủ dữ liệu màn hình chế độ nhập (Extract Mode) sẽ tự động được kích hoạt chỉ trong những tình huống nhất định.

Tôi muốn người dùng của mình có được màn hình nhập dữ liệu đầy đủ trong khi chỉnh sửa văn bản trong điều khiển này, bất kể màn hình hoặc vị trí của điều khiển.

Một cụm từ khác của câu hỏi này: Làm cách nào để buộc chế độ nhập dữ liệu toàn màn hình cho các hộp EditText trong hoạt động của tôi cho dù nội dung là gì?

+0

có, bạn cố gắng android: layout_width = "fiil_parent" android: layout_height = "fill_parent" –

+0

Cảm ơn Usman Kurd, tuy nhiên tình hình của tôi là hơi khác nhau, tôi có sáu hộp như vậy, vì vậy tôi muốn họ mở rộng ra toàn chỉ khi màn hình nhập dữ liệu xảy ra. – skv

+0

Go for AutoCompleteTectView ... –

Trả lời

5

Tôi đã giải quyết vấn đề này, không thực sự được giải quyết, nhưng đã tìm thấy một công việc hợp lệ.

Cách giải quyết là tôi thiết kế một trình soạn thảo văn bản (mà trông giống như giao diện người dùng toàn màn hình) và trên nhấp chuột của mỗi người EditBox es hoạt động giao diện người dùng mới được triggerred (với startActivityForResult() để kiểm soát sau khi được hoàn thành là tay trở lại hoạt động gọi điện) và sau khi hoàn thành chỉnh sửa, văn bản sẽ được chuyển trở lại màn hình chính.

Tôi cũng đảm bảo rằng các hộp chuyển điều khiển đó không tập trung để chúng chuyển ngay quyền kiểm soát sang giao diện người dùng mới.

Bằng cách này tôi đã có thể triển khai nút hủy, giờ đây thực sự cho phép người dùng quay lại mà không lưu các thay đổi mà anh vô tình thực hiện.

Tôi mở cho những ý tưởng mới, nhưng điều này đã làm việc cho tôi.

Mã ở Activity:

public void onBtnClicked(View v) { 
    EditText current_text_box = (EditText) v; 

    Intent intent = new Intent(ObservationActivity.this, 
      TexteditorActivity.class); 
    intent.putExtra("start_text", current_text_box.getText().toString()); 
    intent.putExtra("start_position", current_text_box.getSelectionStart()); 
    startActivityForResult(intent, v.getId()); 
} 

Mã ở XML:

<EditText 
    android:id="@+id/observation_text" 
    style="@style/icon_text" 
    android:focusable="false" 
    android:imeOptions="flagNoExtractUi" 
    android:inputType="textMultiLine" 
    android:onClick="onBtnClicked" > 
</EditText> 

Để tạo giao diện người dùng toàn màn hình tôi đã sử dụng mã, bạn có thể sử dụng bất kỳ như (http://android-richtexteditor.googlecode.com/)

+2

Đây là một ý tưởng tuyệt vời, tôi đang ở tình huống tương tự chính xác và tôi đã quyết định theo bước chân của bạn :) Chúc mừng – Bruce

+0

Đây thực sự là một giải pháp tốt. Vui lòng kiểm tra câu hỏi của tôi ở đây. Và cho tôi biết nếu bạn gặp phải tình huống này. http: // stackoverflow.com/questions/29786797/requestfocus-is-make-the-scrollview-to-jump-even-the-view-là-well-over-the-a –

+0

Đối mặt với 404. Trợ giúp –

0

You Can Hãy thử Điều này

yourEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
     @Override 
     public void onFocusChange(View v, boolean hasFocus) { 
      if(hasFocus){ 
       yourEditText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
      } 
     } 
    }); 

Nhập bố cụcParams bố cục cha mẹ của bạn. Câu trả lời của bạn cũng sẽ hoạt động tốt.

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