0
EditText
をクリックすると、EditText
のサービスでフローティングレイアウトが使用されていますが、キーボードは表示されていますがレイアウトは調整されていません。私は2日間掘り下げており、答えはどれも私のために働いていません。私はマニフェストでwindowSoftInputModeを設定し、setFitsSystemWindows
を私のレイアウトでもtrueに設定しました。サービスのレイアウトはキーボードで調整されません
FloatingService.java
public class FloatingService extends Service implements View.OnClickListener {
private WindowManager windowManager;
private LinearLayout contentLayout;
private View mainView;
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams mainParams = getMainParams();
contentLayout = new LinearLayout(this);
contentLayout.setFitsSystemWindows(true);
windowManager.addView(contentLayout, mainParams);
LayoutInflater layoutInflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mainView = layoutInflater.inflate(R.layout.content_floating_iv, contentLayout);
EditText editText = (EditText) mainView.findViewById(R.id.editText);
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
});
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onClick(View view) {
}
@Override
public void onDestroy() {
if (contentLayout != null) {
windowManager.removeView(contentLayout);
}
super.onDestroy();
}
private WindowManager.LayoutParams getMainParams() {
WindowManager.LayoutParams mainParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
mainParams.gravity = Gravity.BOTTOM ;
mainParams.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
return mainParams;
}
マニフェスト
<service
android:name="com.jibmobile.pogotoolkit.services.FloatingService"
android:windowSoftInputMode="stateVisible|adjustResize"/>
、あなたはそれがFacebookのchatheadのように、すべてのアプリケーションの上に浮いているように持っているサービス –
の代わりに活動を使用することができます。あなたは私の知る限り、ただの活動でそれをすることはできません –