Отрегулируйте проблему с панорамированием на клавиатуре Android

Итак, в основном я хочу нажать нижнюю кнопку на верхнюю часть клавиатуры и нажать другой контент после открытия клавиатуры. Проблема в том, что если я использую настройку панорамирования, кнопка перекрывает текст редактирования, а если я использую кнопку настройки изменения размера, она не появляется.

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
tools:context="com.lifeincontrol.activities.home.AddCompanionActivity"
>
<android.support.v7.widget.Toolbar
  android:id="@+id/toolbar"
  android:layout_width="match_parent"
  android:layout_height="@dimen/toolbar_height"
  android:background="?attr/colorPrimary"
  android:titleTextColor="@android:color/white"
  app:popupTheme="@style/AppTheme.PopupOverlay"
  >
</android.support.v7.widget.Toolbar>
<ScrollView
  android:id="@+id/scroll_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:fillViewport="true"
  >
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
  <ImageView
      android:id="@+id/companion_image"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="40dp"
      android:src="@drawable/ic_add_companion_illustration"
      />
  <LinearLayout
      android:id="@+id/number_field"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_below="@+id/companion_image"
      android:layout_marginLeft="15dp"
      android:layout_marginTop="62dp"
      android:orientation="horizontal"
      >
    <LinearLayout
        android:id="@+id/country_code_layout_before"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:layout_marginBottom="7dp"
        android:orientation="vertical"
        >
      <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:orientation="horizontal"
          >
        <ImageView
            android:id="@+id/text_country_code_before"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:layout_marginRight="12dp"
            android:drawableRight="@drawable/arrow_drop_down"
            android:src="@drawable/flag_in"
            />
        <ImageView
            android:id="@+id/drop_down_before"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="12dp"
            android:paddingTop="12dp"
            android:src="@drawable/down_arrow_logging"
            />
      </LinearLayout>
      <View
          android:layout_width="match_parent"
          android:layout_height="1dp"
          android:layout_marginRight="12dp"
          android:layout_marginTop="4dp"
          android:background="#5E000000"
          />
    </LinearLayout>
    <EditText
        android:id="@+id/number_edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginRight="16dp"
        android:hint="Phone Number"
        android:inputType="number"
        android:maxLines="1"
        android:textColorHint="#aaa"
       />
    <ImageView
        android:id="@+id/phone_book"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="11dp"
        android:src="@drawable/circle"
        android:visibility="gone"
        />
  </LinearLayout>
  <EditText
      android:id="@+id/name_edit_text"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_below="@+id/number_field"
      android:layout_marginLeft="16dp"
      android:layout_marginRight="16dp"
      android:layout_marginTop="30dp"
      android:hint="Name"
      android:imeActionLabel="Done"
      android:imeOptions="actionDone"
      android:maxLines="1"
      android:singleLine="true"
      android:textColorHint="#aaa"
      />
  <View
      android:layout_width="match_parent"
      android:layout_height="55dp"
      android:layout_below="@+id/name_edit_text"
      />
  <Button
      android:id="@+id/button_send"
      android:layout_width="match_parent"
      android:layout_height="55dp"
      android:layout_alignParentBottom="true"
      android:background="@color/companion_button_send"
      android:text="Send"
      android:textColor="@color/white"
      android:textSize="14sp"
      />
</RelativeLayout>
</ScrollView>
</LinearLayout>

первое изображение перед открытием клавиатуры

здесь я хочу показать зеленую кнопку поверх клавиатуры


person Rishabh Tanwar    schedule 10.11.2017    source источник
comment
Я не уверен, что вы можете заставить его. Но Android сделает это за вас — когда вы нажмете «Готово» на number_edit_text, фокус переместится на name_edit_text, а когда вы нажмете «Готово» на нем, фокус переместится на кнопку (т. е. клавиатура исчезнет).   -  person sposnjak    schedule 10.11.2017
comment
фокус клавиатуры работает нормально, проблема, с которой я столкнулся, заключается в том, что я не могу переместить кнопку отправки в верхнюю часть клавиатуры.   -  person Rishabh Tanwar    schedule 12.11.2017


Ответы (2)


Добавьте приведенную ниже строку в файл Java активности.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

А затем добавьте ScrollView в макет. Помните, что ScrollView может содержать только одно дочернее представление.

<ScrollView
    android:id="@+id/scrollview"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <--------Your content---------->

  </RelativeLayout>

  </ScrollView>
person TheHound.developer    schedule 10.11.2017
comment
спасибо за ответ @TheHound.developer панель инструментов будет внутри этого ScrollView? - person Rishabh Tanwar; 12.11.2017
comment
Если вы хотите, чтобы панель инструментов также двигалась вверх и прокручивалась, тогда да. Если вам нужна фиксированная панель инструментов, не ставьте ее внутрь Scrollview. - person TheHound.developer; 13.11.2017
comment
@RishabhTanwar Если вы считаете ответ полезным, примите его. - person TheHound.developer; 13.11.2017
comment
Нет, это не работает, как ожидалось. Кнопка отправить не подходит для этого - person Rishabh Tanwar; 13.11.2017

1. измените AdjustPan на AdjustResize в вашем файле манифеста, как показано ниже.

<activity android:name=".MainActivity"
            android:windowSoftInputMode="adjustResize|stateHidden"/>
  1. поместите свой xml-код внутри scrollView

    <ScrollView
     android:layout_width="match_parent"
     android:layout_height="match_parent">
    
    <RelativeLayout
     android:layout_width="match_parent"
     android:layout_height="match_parent">
    <--------Your content---------->
    
    </RelativeLayout>
    </ScrollView>
    
person Munir    schedule 10.11.2017
comment
спасибо за ответ @munir, но если я помещу свой код в scrollView, моя панель инструментов также будет прокручиваться с этим - person Rishabh Tanwar; 12.11.2017
comment
@RishabhTanwar поместите этот вид прокрутки под панелью инструментов. - person Munir; 12.11.2017
comment
если вы видите мой код, вид прокрутки находится под панелью инструментов, только вы хотите, чтобы я удалил родительский макет? - person Rishabh Tanwar; 12.11.2017
comment
@RishabhTanwar, я показываю ваш код, который вы помещаете в прокрутку под панелью инструментов, тогда как ваша панель инструментов также делает прокрутку? вам просто нужно установить изменение размера окнаSoftInputMode в вашем манифесте, ничего больше - person Munir; 12.11.2017
comment
я добавил, что уже в моем файле манифеста все еще не повезло. Если вы проверите приложение Gmail в Android, там есть раздел для создания учетной записи, мне нужно что-то подобное, когда вы нажимаете там текст редактирования электронной почты. - person Rishabh Tanwar; 12.11.2017