android 4.0 и выше: панель копирования / вставки / вырезания исчезает onLongClick прослушиватель на EditText

#java #android #android-edittext

#java #Android #android-edittext

Вопрос:

Я использую PreferenceActivity на вкладках и добавляю нижний колонтитул с EditText :

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:foo="http://schemas.android.com/apk/res/com.assignmentexpert"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:orientation="vertical">
  <TableLayout 
    android:id="@ id/tableLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:shrinkColumns="2"
    android:stretchColumns="0"
    >
    <TableRow
          android:id="@ id/tableRow1"
          style="@style/text_row" 
          android:layout_weight="1"
          >
  <com.customitems.CustomEditText
        android:id="@ id/taskText"
        style="@style/custom_edittext"
        android:gravity="top|left"
        android:maxLength="8192"
        android:layout_marginLeft= "25dp"
        android:layout_height="110dp"
        android:imeOptions="actionDone"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:scrollbars = "vertical"
        android:layout_marginRight="10dp"
        foo:customFont="Roboto-Regular.ttf"
        android:hint="@string/hint_assignment_task"/>


  </TableRow>
         <TableRow android:layout_height="1px" android:background="#323232">
    <TextView android:layout_span="1" android:layout_height="1px" 
             android:layout_width="fill_parent" android:text="">
     </TextView>
        </TableRow>
  <TableRow
          android:id="@ id/tableRow1"
          style="@style/text_row" 
          android:layout_weight="1"
          >
  <com.customitems.CustomEditText
        android:id="@ id/taskSpecReq"
        style="@style/custom_edittext"
        android:gravity="top|left"
        android:maxLength="8192"
        android:layout_marginLeft= "25dp"
        android:layout_height="110dp"
        android:imeOptions="actionDone"
        android:layout_weight="1"
        android:layout_width="fill_parent"
        android:scrollbars = "vertical"
        android:layout_marginRight="10dp"
        foo:customFont="Roboto-Regular.ttf"
        android:hint="@string/hint_assignment_specific_requirements"/>

     </TableRow>

  </TableLayout>

 </LinearLayout>
 

Итак, когда я использую длинный щелчок по taskTest EditText, появляется функция копирования / вставки / вырезания и работает должным образом. Но когда я долго нажимаю на taskSpecReq панель копирования / вставки / вырезания my task specreq, и вкладки исчезают с экрана.
taskSpecReq Находится в нижней части экрана.

Длительное нажатие на 1-й EditText : введите описание изображения здесь

Длительное нажатие на 2-й EditText: введите описание изображения здесь

Ответ №1:

Поскольку я использовал TabHost и вложенную в него активность, я решил ее с помощью

   android:windowSoftInputMode="stateUnspecified" 
 

для TabActivity и для вложенной активности :

   android:windowSoftInputMode = "adjustResize"
 

Это решило мою проблему.

Ответ №2:

Похоже, что система может прокручивать ваш вид, чтобы убедиться, что CustomEditText курсор виден над программной клавиатурой, и поэтому прокручивает верхнюю часть экрана. Проверьте android:windowSoftInputMode атрибут для вашей активности в вашем AndroidManifest.xml , описанном здесь.

(Простой способ подтвердить, так ли это, — просто переключить два ваших CustomEditText виджета. Если проблема всегда возникает с нижней, то это может быть она.)

Комментарии:

1. Использование @RikkiTikkiTavi не adjustPan вызвало бы проблему?

2. Я не знаю. adjustPan работает хорошо, чтобы правильно сфокусировать EditText. Потому что без этого программная клавиатура действует странно.