我们开始:两个具有共享元素转换的活动(Button)。第二个Activity
有一个带有提示的TextInputLayout
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="GO"
android:transitionName="test"/>
<android.support.design.widget.TextInputLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="WTF?!">
<android.support.design.widget.TextInputEditText android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
第二个Activity
的输入转换被延迟以澄清问题:TextInputLayout
的提示忽略转换动画并在转换开始后立即显示。在动画结束时,您可以在提示下方看到正确设置动画的EditText背景(水平线)。这是一个错误还是我错过了什么?这是第二个Activity
:
public class SecondActivity extends AppCompatActivity {
public static void launch(Activity activity, View sharedElement) {
Intent intent = new Intent(activity, SecondActivity.class);
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(activity, sharedElement, "test");
activity.startActivity(intent, options.toBundle());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setEnterTransition(new Slide().setDuration(5000));
}
}
}
编辑:可以通过在第二个活动的布局中添加背景来“修复”此错误。
答案 0 :(得分:5)
for API 21+
android:transitionGroup="true"
在TextInputLayout
中添加此行。它会解决它。或者,如果您有一些TextInputLayout
,那么将该行添加到其容器中。
答案 1 :(得分:0)
我认为它是TextInputLayout
的错误。我删除了它,我给了TextInputEditText
提示,它按预期工作。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="GO"
android:transitionName="test" />
<android.support.design.widget.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="WTF?!" />
</LinearLayout>
答案 2 :(得分:0)
似乎是一个错误。我提交了new issue。
您可以通过为第二项活动定义android:background
来避免这种情况。