मैंने एक सरल MotionLayout बनाया है जो लगभग एक समन्वयक लेआउट के समान है (एनिमेशन थोड़ा अलग हैं)।
यहाँ कुछ इस तरह है:
एक बार कीबोर्ड के खुलने के बाद सामग्री क्षेत्र के भीतर एक जोड़े) एडिट टेक्स्ट व्यू का उपयोग करना मोशन लाईट एनिमेशन को तोड़ देता है। एनिमेशन में अब देरी हो गई है, राज्य गलत हैं और यूआई थोड़ा जमने लगा है। इसे हल करने का कोई उपाय? बग को gif के रूप में लिंक करें
प्रयुक्त संस्करण:
com.google.android.material:material:1.2.0-alpha01
androidx.constraintlayout:constraintlayout:2.0.0-beta3
मैं एक छोटे से नमूना ऐप में भी व्यवहार को पुन: पेश कर सकता हूं
नमूना लेआउट। xml:
<androidx.constraintlayout.motion.widget.MotionLayout
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"
app:layoutDescription="@xml/animation"
tools:showPaths="true">
<androidx.appcompat.widget.Toolbar
android:id="@+id/customtoolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginBottom="48dp"
android:text="title"
app:layout_constraintBottom_toTopOf="@+id/formLayout"
app:layout_constraintStart_toStartOf="parent" />
<ImageView
android:id="@+id/image"
android:layout_width="200dp"
android:background="#ff00ff"
android:layout_height="200dp"
android:scaleType="centerCrop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_home_black_24dp" />
<androidx.core.widget.NestedScrollView
android:id="@+id/formLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image">
<LinearLayout
android:id="@+id/formLayoutContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/container1"
android:layout_width="match_parent"
android:layout_height="200dp">
<EditText
android:id="@+id/container1EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EditText"
android:importantForAutofill="no"
android:inputType="text"
android:lines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/container2"
android:layout_width="match_parent"
android:layout_height="200dp">
<EditText
android:id="@+id/container2EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EditText"
android:importantForAutofill="no"
android:inputType="text"
android:lines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/container3"
android:layout_width="match_parent"
android:layout_height="200dp">
<EditText
android:id="@+id/container3EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EditText"
android:importantForAutofill="no"
android:inputType="text"
android:lines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/container4"
android:layout_width="match_parent"
android:layout_height="200dp">
<EditText
android:id="@+id/container4EditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="EditText"
android:importantForAutofill="no"
android:inputType="text"
android:lines="1" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.button.MaterialButton
android:id="@+id/saveButton"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:layout_marginTop="24dp"
android:layout_marginBottom="16dp"
android:text="Save" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.motion.widget.MotionLayout>
animation.xml:
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<Transition
app:constraintSetEnd="@id/end"
app:constraintSetStart="@id/start"
app:motionInterpolator="easeIn">
<OnSwipe
app:dragDirection="dragUp"
app:touchAnchorId="@id/formLayout"
app:touchAnchorSide="top" />
</Transition>
<ConstraintSet android:id="@+id/start">
<Constraint
android:id="@id/image"
android:layout_width="200dp"
android:layout_height="200dp"
android:alpha="1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginBottom="48dp"
android:scaleX="1.0"
android:scaleY="1.0"
app:layout_constraintBottom_toTopOf="@+id/formLayout"
app:layout_constraintStart_toStartOf="parent" />
</ConstraintSet>
<ConstraintSet android:id="@+id/end">
<Constraint
android:id="@id/image"
android:layout_width="200dp"
android:layout_height="72dp"
android:alpha="0"
android:translationY="-10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Constraint
android:id="@id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="55dp"
android:scaleX="0.85"
android:scaleY="0.85"
app:layout_constraintBottom_toBottomOf="@id/customtoolbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/customtoolbar" />
</ConstraintSet>
<KeyFrameSet>
<KeyPosition
app:framePosition="70"
app:keyPositionType="pathRelative"
app:motionTarget="@id/title"
app:percentY="0.1" />
<KeyAttribute
android:alpha="0.8"
app:framePosition="60"
app:motionTarget="@id/image" />
</KeyFrameSet>
</MotionScene>
आपके प्रकट में windowSoftInputMode का मूल्य क्या है ? जब आप स्क्रॉल करते हैं, तो ऐसा लगता है कि केंद्रित EditText को वापस दृश्य में स्क्रॉल किया जा रहा है जो समझ में आता है। यह स्पष्ट नहीं है कि आप इस परिदृश्य में क्या होना चाहते हैं। आप विंडो के मान को बदलने की कोशिश कर सकते हैं। यह देखने के लिए कि क्या यह आपकी मदद करता है।
—
Cheticamp
क्या आपको अपने नमूने को गितुब पर रखने का मन है तो हम आपको वहां से विश्लेषण करने में मदद कर सकते हैं?
—
इसाई डेमियर
@IsaiDamier github.com/CaptMustache/views-widgets-samples मैंने केवल एक एडिट टेक्स्ट फ़ील्ड स्कोरलेआउट के अंत में जोड़ा है। कृपया "कॉम्प्लेक्स मोशन सैंपल" की जाँच करें और इनपुटफील्ड + कीबोर्ड + स्क्रॉलिंग के साथ
—
खेलें
@GensaGames यहां का दृष्टिकोण केवल ऐप लेआउट का उपयोग किए बिना केवल गति लेआउट और इसके एनिमेशन का उपयोग करना है। Googles मोशन लेआउट नमूना देखें 17 +18 github.com/CaptMustache/views-widgets-samples/tree/master/…
—
LuckyMalaka
AppBarLayout
।