2013-06-24 32 views
10

Vấn đề của tôi là thông báo lỗi trong EditTexts của tôi đang cuộn trên đầu thanh tác vụ. Đây có phải là lỗi android hay tôi đang làm gì đó sai?Android setError() di chuyển thư trên đầu trang của ActionBar

Ngoài ra lỗi này xảy ra ngay cả khi bàn phím bị hỏng, nó chỉ xảy ra ở trên các ảnh chụp màn hình.

Đây là những gì tôi đang nói về: http://imgur.com/fG8bd3E,uFzhOXa#1 < - có hai hình ảnh

Dưới đây là cách bố trí của tôi, tôi thêm EditTexts trong mã của tôi vào LinearLayout kiosk_form_table

<ScrollView 
    style="@style/DefaultBackground" 
    android:layout_width="0dp" 
    android:layout_height="match_parent" 
    android:layout_weight="0.6" 
    android:fadeScrollbars="false" 
    android:padding="20dp" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingRight="20dp" > 

     <LinearLayout 
      android:id="@+id/kiosk_form_table" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" /> 

     <Button 
      android:id="@+id/kiosk_submit_large" 
      style="@style/LoginButton" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:onClick="submit" 
      android:text="@string/submit" /> 
    </LinearLayout> 
</ScrollView> 

Làm thế nào tôi thêm EditTexts

kiosk_form.addView(getKioskRow(R.layout.kiosk_text_row, "First Name", true, null)); 

private View getKioskRow(int layout, String header, boolean required, String buttonName) 
{ 
    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View view = inflater.inflate(layout, null); 
    view.setTag(required); 
    addHeader((TextView) inflater.inflate(R.layout.field_header, null), header); 
    if (required) 
     ((TextView) view.findViewById(R.id.kiosk_input)).setHint("Required"); 
    if (buttonName != null) 
     ((Button) view.findViewById(R.id.kiosk_input_button)).setText(buttonName); 
    return view; 
} 

private void addHeader(TextView view, String header) 
{ 
    view.setTag(false); 
    view.setText(header); 
    kiosk_form.addView(view); 
} 

Làm thế nào tôi thiết lập các lỗi

(TextView) view).setError(getString(R.string.error_field_required)); 

Trả lời

0

Nơi nào bạn muốn xem các thông báo lỗi? Nếu bạn muốn nó trên EditText, đặt nó trên editText.

((EditText) findViewByID(R.id.my_edit_text)).setError ...... // and so on 

Chỉnh sửa: câu trả lời gốc không hữu ích.

Đây là một giải pháp khả thi: bạn có thể ẩn thông báo lỗi khi người dùng đang cuộn chế độ xem. Khi cuộn xong, bạn có thể thiết lập lại thông báo lỗi và nó sẽ xuất hiện ở đúng vị trí! Đây là cách bạn có thể phát hiện khi một cuộn xong: Android: How to detect when a scroll has ended

+0

Tôi muốn thông báo lỗi xuất hiện trên nhiều chế độ xem là tất cả phân lớp của TextView vì vậy nếu bạn xem đoạn mã cuối cùng của mình, tôi thêm thông báo lỗi vào chế độ xem của mình, một số là chỉnh sửa văn bản. Vấn đề của tôi không phải là lỗi không hiển thị. Lỗi của tôi là khi tôi cuộn, thông báo bật lên nằm trên đầu thanh hành động như được thấy trong liên kết imgur của tôi (Tôi mới tham gia cộng đồng, vì vậy tôi không có đủ danh tiếng để nhúng liên kết). – Sagar

+0

Ohhh ok tôi hiểu rồi. Đây là một giải pháp khả thi: bạn có thể ẩn thông báo lỗi khi người dùng đang cuộn chế độ xem. Khi cuộn xong, bạn có thể thiết lập lại thông báo lỗi và nó sẽ xuất hiện ở đúng vị trí! Dưới đây là cách bạn có thể phát hiện khi cuộn xong: http://stackoverflow.com/questions/2089552/android-how-to-detect-when-a-scroll-has-ended – Oleksiy

+0

Hmm, tôi có thể thấy rằng hoạt động. Chỉ cần ra khỏi tò mò bạn có biết một cách nhanh chóng để tắt tất cả các thông báo lỗi, hoặc nếu đó là thậm chí có thể. Tôi hỏi vì ngay bây giờ tôi lặp qua một số lượng lớn các lượt xem để điền vào biểu mẫu đó và tôi muốn tránh phải lặp qua danh sách để tắt thông báo lỗi mỗi khi người dùng cuộn. Bất kể cảm ơn vì sự giúp đỡ! – Sagar

0

tôi giải quyết vấn đề tương tự bằng cách thiết lập cờ

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 
2

Nó là Android lỗi hệ điều hành. Bạn có thể theo dõi tiến trình here

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