2015-08-11 1 views
1

У меня проблема с программной клавиатурой Android, перекрывающей поля ввода в фокусе. Я пробовал различные решения, но безрезультатно. Мое приложение построено с использованием phonegap. Я попытался изменить андроид: windowSoftInputMode для различных решений, но все не работает. это проблемы i ahveПроблема со стандартным программным обеспечением Android со входом в фокус

1) Поле ввода экрана входа в систему не фокусируется в центре экрана, когда оно находится в фокусе, если оно не набрано. Это когда android: windowSoftInputMode = "adjustPan".

2) Если android: windowSoftInputMode = "adjustResize", то поле ввода входит в центр экрана, но только при вводе текста, и это также нарушает структуру нижней навигационной панели, которая выдвигается клавиатурой.

Есть ли у кого-нибудь советы о том, что я должен делать?

ответ

0

У меня была та же проблема. Вот обходной путь:

Установить плагин com.ionic.keyboard

Установить это в config.xml

<preference name="fullscreen" value="true" /> 

Добавить это в нижней части страницы

<div id="kbs" class="keyboardspace"></div> 

ДАЙ окружающий элемент id «рама»

Добавьте это в свой css

.keyboardspace { 
    width: 100%; 
    height: 0; 
} 

Теперь зарегистрировать эти два слушателя событий (я использую JQuery здесь, но это должно быть возможно без)

var window = angular.element($window); 
window.on('native.keyboardshow', function (e) { 
    $("#kbs").height(e.keyboardHeight); 
    var focus = $(document.activeElement); 
    var pos = focus.offset(); 
    var bottom = pos.top + focus.height() + 10; 
    var maxpos = $($window).height() - e.keyboardHeight; 
    if (bottom > maxpos) { 
     $("#frame").scrollTop(bottom - maxpos); 
    } 
}); 
window.on('native.keyboardhide', function() { 
    console.log("native.keyboardhide"); 
    $("#kbs").height(0); 
}); 

Обратите внимание, что рамка должна быть прокручивать для этой работы.

+0

Я строю это на угловой. Как я могу написать это угловым способом? Извините, я так новичок в этом. – nareeboy

+0

Кажется, это сложнее получить смещение с угловым. Вы можете включить jQuery в свой проект, или вы должны сами заменить вызовы jQuery. Угловая включает jqLite, поэтому большая часть синтаксиса останется неизменной. – F43nd1r

0

Вы можете использовать этот код в Softkeyboard.java:

@override 
public void onComputeInsets(Insets outInsets){ 

super.onComputeInsets(outInsets); 
if(!isFullscreenMode()){ 
outInsets.contentTopInsets = outInsets.visibleTopInsets; 
} 
}