9

ここに行きます:共有要素の遷移を持つ2つのアクティビティ(ボタン)。二Activityは、ヒントとTextInputLayoutがあります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)); 
     } 
    } 
} 

EDIT:このバグは、バックグラウンドに第二のアクティビティのレイアウトを追加することにより、「固定」することができます。

without backgroundwith background

+0

あなたの共有要素はどれですか?何が起こると思いますか? – azizbekian

+0

例のコードから分かるように、共有要素はボタンです。 TextInputLayoutのヒントは、他のビューと同様に、アクティビティ遷移の一部として適切にアニメートされることが期待されます(ビデオ内のEditTextの背景の適切な遷移を見てください)。 – artkoenig

+0

質問を明確にしてください。あなたのアニメーションGIFは素敵に見える、我々はそれを持っている。それはかなりクールなアニメーションです。しかし、私は理解できません、何が問題なのですか?それはどこにある?青い線が上に移動すると私は何を見ますか。それで全部です。そして、短い瞬き線が入力フィールドの下に現れます。それは期待されていますか?それは期待されていませんか? WTF? – babay

答えて

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> 
0

バグであるようです。私はnew issueを提出しました。

これを回避するには、2番目のアクティビティにandroid:backgroundを定義します。

0
APIについて

21+

android:transitionGroup="true" 

TextInputLayoutにこの行を追加します。それはそれを修正するだろう。または、数がTextInputLayoutの場合は、その行をコンテナに追加します。

関連する問題