2016-05-12 3 views
0

У меня есть TextView, который постоянно перемещается каждый раз, когда я нажимаю на свой EditText и открываю клавиатуру мягкого ввода. EditText расположен в нижней части страницы. Я хочу, чтобы TextView, который у меня есть, не перемещается, когда появляется клавиатура. В моем случае, TextView называется No comments to display. Вот пример того, что происходит, когда я нажимаю на моем EditTextСделать TextView не двигаться, когда клавиатура находится на экране

enter image description here

Первоначально TextView содержится в светлой серой зоне ниже, но когда я нажимаю на EditText , он подталкивается. Вот мой код:

public class Comments extends AppCompatActivity { 
    private TextView noCommentsView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.comments); 
     EditText comment = (EditText) findViewById(R.id.write_comment); 
     TextView noCommentsView = (TextView) findViewById(R.id.no_comments_text); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
     noCommentsView.setVisibility(View.VISIBLE);   
    } 
} 

Теперь я знаю, что adjustResize просто толкает все вверх и именно поэтому TextView получает толкнул вверх так высоко. Тем не менее, я хочу, чтобы TextView остался на месте. Я попытался использовать getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);, и это выполняет мою цель, но EditText не перемещается с клавиатуры, потому что весь макет не отрегулирован. Есть ли способ обойти это? Есть ли способ передвижения вверх по EditText, но у вас нет TextView двигаться вверх? Благодаря!

+0

Пробовали ли вы 'adjustPan'? –

+0

Возможный дубликат проверки моего ответа здесь http://stackoverflow.com/questions/37162919/how-to-make-button-stay-on-the-bottom-when-soft-keyboard-goes-up/37163111#37163111 –

ответ

0

Оформить заказ THIS Опубликовать в блоге Android Dev. Наиболее важным для вас может быть линия

android:windowSoftInputMode="adjustPan" 

о adjustPan

Главное окно на данный вид деятельности не изменяется, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически разворачивается так, что текущий фокус никогда не закрывается клавиатурой, и пользователи всегда могут видеть, что они набирают. Это, как правило, менее желательно, чем изменение размера, поскольку пользователю может понадобиться закрыть мягкую клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.

больше о других вариантов/флагов HERE

+0

Привет, проблема с 'adjustPan' заключается в том, что весь просмотр загорается, и текущее представление фокусируется. Проблема в том, что верхняя, более темная серая часть экрана выводится из представления, чего я не хочу. Любые другие советы? – user1871869

+0

Этот способ подходит для «проблемы» клавиатуры, теперь проблема, вероятно, связана с вашим окном просмотра. Попробуйте установить прокручиваемое представление 'android: fillViewport =" true "' as [ЗДЕСЬ] (http://www.curious-creature.com/2010/08/15/scrollviews-handy-trick/) – snachmsm

1

на AndroidManifest.xml

добавить следующее: android:windowSoftInputMode="stateVisible|adjustResize"

ли эта работа для вас? удачи в проекте :)

+0

Привет, даже с изменением размера, мой взгляд подталкивается вверх. Это то, что я использовал все время. Даже если я добавлю его в файл 'Manifest', моя проблема все еще существует. Любые другие идеи? – user1871869

+0

с какой способностью вы пользуетесь? –

+0

Я расширяю AppCompatActivity – user1871869

4

Поместите свои getWindow() методы выше setContentView(). Или Else удалите getWindow() метоз из кода и добавьте android:windowSoftInputMode="adjustResize|stateHidden" в файл манифеста.

+0

Привет, даже с изменением размера, мое мнение выдвинуто вверх. Это то, что я использовал все время. Даже если я добавлю его в файл 'Manifest', моя проблема все еще существует. Любые другие идеи? – user1871869

+0

, если вы используете полноэкранный режим, тогда он не будет работать –

0

андроида: windowSoftInputMode = "adjustPan | stateHidden"

0

В андроида манифеста, добавьте строку:

андроида: windowSoftInputMode = "stateHidden | adjustPan". adjustPan говорит:

Главное окно мероприятия не изменяется, чтобы освободить место для мягкой клавиатуры. Скорее, содержимое окна автоматически разворачивается так, что текущий фокус никогда не скрывается клавиатурой, и пользователи всегда могут видеть, что они набирают.Это, как правило, менее желательно, чем изменение размера, поскольку пользователю может понадобиться закрыть мягкую клавиатуру, чтобы получить доступ к скрытым частям окна и взаимодействовать с ними.

Источник: http://developer.android.com/guide/topics/manifest/activity-element.html

Смежные вопросы