ব্যবহার করছেন তাদের জন্য ConstraintLayout , android:windowSoftInputMode="adjustPan|adjustResize"
কাজ করবে না।
আপনি যা করতে পারেন তা হল নরম কীবোর্ড শ্রোতার ব্যবহার , উপরের দর্শনের নীচে থেকে নীচের মতামতের সীমাবদ্ধতাগুলি সেট করে , তারপরে প্রতিটি দৃশ্যের জন্য একটি উল্লম্ব পক্ষপাত নির্ধারণ করুন (সীমাবদ্ধতার মধ্যে স্থিতিকাল শতাংশ হিসাবে) একটি অনুভূমিক নির্দেশিকাতে (শতাংশ দ্বারাও অবস্থিত) , তবে পিতামাতার কাছে)।
প্রতিটি দৃশ্যের জন্য, আমাদের কেবলমাত্র প্রোগ্রামগতভাবে অবশ্যই কীবোর্ড প্রদর্শিতapp:layout_constraintBottom_toBottomOf
হওয়ার @+id/guideline
সময় পরিবর্তন করতে হবে।
<ImageView
android:id="@+id/loginLogo"
...
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.15" />
<RelativeLayout
android:id="@+id/loginFields"
...
app:layout_constraintVertical_bias=".15"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/loginLogo">
<Button
android:id="@+id/login_btn"
...
app:layout_constraintVertical_bias=".25"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@+id/loginFields"/>
সাধারণত একটি নরম কীবোর্ড পর্দার উচ্চতার 50% এর বেশি গ্রহণ করে না। সুতরাং, আপনি 0.5 তে গাইডলাইন সেট করতে পারেন।
<android.support.constraint.Guideline
android:id="@+id/guideline"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.5"/>
এখন প্রোগ্রামগতভাবে, যখন কীবোর্ডটি প্রদর্শিত না হয় , আমরা সমস্ত app:layout_constraintBottom_toBottomOf
পিছনে পিতামাতার কাছে সেট করতে পারি , তদ্বিপরীত।
unregistrar = KeyboardVisibilityEvent.registerEventListener(this, isOpen -> {
loginLayout.startAnimation(AnimationManager.getFade(200));
if (isOpen) {
setSoftKeyViewParams(loginLogo, R.id.guideline, ConstraintLayout.LayoutParams.PARENT_ID, -1, "235:64", 0.15f,
63, 0, 63, 0);
setSoftKeyViewParams(loginFields, R.id.guideline, -1, R.id.loginLogo, null, 0.15f,
32, 0, 32, 0);
setSoftKeyViewParams(loginBtn, R.id.guideline, -1, R.id.useFingerPrintIdText, null, 0.5f,
32, 0, 32, 0);
} else {
setSoftKeyViewParams(loginLogo, ConstraintLayout.LayoutParams.PARENT_ID, ConstraintLayout.LayoutParams.PARENT_ID, -1, "235:64", 0.15f,
63, 0, 63, 0);
setSoftKeyViewParams(loginFields, ConstraintLayout.LayoutParams.PARENT_ID, -1, R.id.loginLogo,null, 0.15f,
32, 0, 32, 0);
setSoftKeyViewParams(loginBtn, ConstraintLayout.LayoutParams.PARENT_ID, -1, R.id.useFingerPrintIdText,null, 0.25f,
32, 0, 32, 0);
}
});
এই পদ্ধতিটি কল করুন:
private void setSoftKeyViewParams(View view, int bottomToBottom, int topToTop, int topToBottom, String ratio, float verticalBias,
int left, int top, int right, int bottom) {
ConstraintLayout.LayoutParams viewParams = new ConstraintLayout.LayoutParams(view.getLayoutParams().width, view.getLayoutParams().height);
viewParams.dimensionRatio = ratio;
viewParams.bottomToBottom = bottomToBottom;
viewParams.topToTop = topToTop;
viewParams.topToBottom = topToBottom;
viewParams.endToEnd = ConstraintLayout.LayoutParams.PARENT_ID;
viewParams.startToStart = ConstraintLayout.LayoutParams.PARENT_ID;
viewParams.verticalBias = verticalBias;
viewParams.setMargins(Dimensions.dpToPx(left), Dimensions.dpToPx(top), Dimensions.dpToPx(right), Dimensions.dpToPx(bottom));
view.setLayoutParams(viewParams);
}
গুরুত্বপূর্ণ বিষয়টি হ'ল উল্লম্ব পক্ষপাতটি এমনভাবে সেট করা নিশ্চিত করা উচিত যখন কীবোর্ডটি প্রদর্শিত হয় এবং প্রদর্শিত না হয়ে সঠিকভাবে স্কেল করা যায়।
Theme.AppCompat.Light.NoActionBar.FullScreen
> - যেমন এই উত্তর প্রতি), stackoverflow.com/a/7509285/1307690