タグ付けされた質問 「android-viewpager2」

7
ページはViewPager2全体を埋める必要があります(match_parentを使用)
画像、商品名、商品画像を表示するアイテムレイアウトがあります。制約レイアウトを使用して1:1.5比率で画像を表示する必要があります。しかし、小さな画像を読み込むと、テキストの下が表示されません。 以下は、アイテムXMLの私のコードです。 <?xml version="1.0" encoding="utf-8"?> <layout 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"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/coordinatorLayoutCartRoot" android:layout_width="match_parent" android:layout_height="match_parent"> <com.jackandphantom.circularimageview.RoundedImage android:id="@+id/imageViewSlider" android:layout_width="match_parent" android:layout_height="0dp" android:scaleType="centerCrop" app:layout_constraintBottom_toTopOf="@id/tvTitle" app:layout_constraintDimensionRatio="WH,1:1.4" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:rounded_radius="0" tools:src="@tools:sample/avatars" /> <TextView android:id="@+id/tvTitle" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:padding="4dp" android:text="Fitted crew neck sweater" android:textColor="@color/colorBlack" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/imageViewSlider" /> <TextView android:id="@+id/tvPrice" android:layout_width="0dp" android:layout_height="wrap_content" android:gravity="center" android:padding="4dp" android:text="$34.00" android:textColor="@color/colorBlack" android:textStyle="bold" …

1
ViewModel状態でのViewPager2 / Tabsの問題
私はMVVMパターンに従っています。つまり、フラグメントごとにViewModelがあります。 ViewPager2を使用して2つのタブを追加しました。 私のアダプターは次のようになります: @Override public Fragment createFragment(int position) { switch (position) { case 0: return new MergedItemsFragment(); case 1: return new ValidatedMergedItemsFragment(); } return new MergedItemsFragment(); } タブは機能しています。ただし、MergedItemsFragmentのViewModelの動作がおかしいことに気付きました。タブを追加する前に、次のようにFragmentに移動しました。 NavHostFragment.findNavController(this).navigate(R.id.action_roomFragment_to_itemsFragment); 私がそのフラグメントを残しNavHostFragment.findNavController(this).popBackStack()、後でそのフラグメントに戻ったとき、新しい空のViewModelを取得します。これは意図されたものです。 新しいアプローチで私はナビゲートしていreturn new MergedItemsFragment()ます。そのフラグメントを離れると、後で戻ってきて、古いデータを含む ViewModelを取得しています。ユーザーが別のフラグメントで別のデータを選択したため、古いデータは関係なくなったため、これは問題です。 アップデート#1 同じprintステートメントが複数回呼び出されるため、彼は実際にはすべての古いFragmentをメモリに保持していることに気付きました。それが呼ばれる回数は、私が去ってその画面に戻る回数とともに増加します。したがって、10回離れて戻り、デバイスを回転させると、実際には1行が10回実行されます。ViewModelsで動作するように、ナビゲーションコンポーネントでTabs / ViewPagersを実装する方法を推測しますか? アップデート#2 私は私のViewModelsを次のように設定しました: viewModel = new ViewModelProvider(this, providerFactory).get(MergedItemViewModel.class) 私は同じ結果を得ます: viewModel = ViewModelProviders.of(this).get(MergedItemViewModel.class); フラグメント自体にViewModelをバインドします。したがって、thisフラグメントです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.