我在我的应用程序中使用 ViewPager 创建用于滑动图像的滑块。一切工作正常,除了我必须双击缩放图像。但双击在 ViewPager 上不起作用。我尝试了很多解决方案但没有成功。任何帮助表示赞赏。
谢谢
我在我的一个应用程序片段中使用 ViewPager / FragmentPagerAdapter 在每个页面中显示不同的列表视图(见下图):

问题是,在我更改当前视图(片段)并再次重新打开它后,列表视图未呈现(见下图):

行为是随机的,有时当我在不同的选项卡/页面之间滑动时会显示列表视图。
这是我的片段代码:
public class AstucesFragment extends Fragment implements ActionBar.TabListener {
ActionBar actionBar;
AppSectionsPagerAdapter mAppSectionsPagerAdapter;
ViewPager mViewPager;
public static String[] tabslist = new String[5];
public AstucesFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_astuces, container, false);
tabslist[0] = getActivity().getResources().getString(R.string.astuces_quotidien);
tabslist[1] = getActivity().getResources().getString(R.string.astuces_resto);
tabslist[2] = getActivity().getResources().getString(R.string.astuces_loisirs);
tabslist[3] = getActivity().getResources().getString(R.string.astuces_transports);
tabslist[4] = getActivity().getResources().getString(R.string.astuces_tous);
mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getActivity().getSupportFragmentManager());
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager = (ViewPager) view.findViewById(R.id.astuces_pager); …Run Code Online (Sandbox Code Playgroud) 我有一个ViewPager,我正在使用FragmentStatePagerAdapter来保存我的片段。现在的问题是,当我滑动OnCreateView和OnCreate 时,每次都会调用 Fragment,并且我在 Fragment 中进行网络调用,这些调用会一次又一次地被调用,从而导致延迟。
我从这里复制
如何避免调用OnCreateView和OnCreate的Fragments。
这是我的代码:
FragmentHolder.class
public class ViewPagerAdapter extends SmartFragmentStatePagerAdapter {
final int PAGE_COUNT = 3;
private final ArrayList<Fragment> mFragments = new ArrayList<>();
private long baseId = 0;
private String tabTitles[] = new String[] { "HOME", "DISCOVER", "MESSAGES" };
private Context context;
private TabLayout tabLayout;
public int[] imageResId = {
R.drawable.ic_ac_unit_black_24dp,
R.drawable.ic_airport_shuttle_black_24dp,
R.drawable.ic_all_inclusive_black_24dp
};
public ViewPagerAdapter(FragmentManager fm, Context …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 Android 应用程序,它有 4 个标签和 4 个片段。我已经在我的 Android 设备上运行了该应用程序。但是我遇到的问题是,当我单击前 2 个选项卡时,它工作正常,但是当我打开第 3 个和第 4 个选项卡时,应用程序立即崩溃!
一开始我以为是第3和第4个片段有bug,后来发现这不是第3个或第4个片段的bug。我用第3和第4个片段替换第1和第2个片段,用第3和第4个片段替换第1和第2个片段。同样的事情仍然发生了!
这是我的 main_activity.java。
public class Main_activity extends AppCompatActivity {
@Bind(R.id.main_activity)
View mView;
private int[] tabIcons = {
R.drawable.friend_chat,
R.drawable.call,
R.drawable.tab_contact,
R.drawable.profile
};
private TabLayout tabLayout;
private FragmentManager mFragmentManager;
private FragmentTransaction mFragmentTransaction;
private NonSwipeableViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mFragmentManager = getSupportFragmentManager();
mFragmentTransaction = mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.viewpager, new ConversationsFragment()).commit();
viewPager = (NonSwipeableViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) …Run Code Online (Sandbox Code Playgroud) 我正在使用带有viewpager的recyclerview片段。
我想在屏幕底部进行导航。 在此处输入图片说明
当我单击每个按钮时,每个片段都会显示在frameLayout中。
问题发生在我第二次进入艺术家片段时(第一次出现时,它按照我的意图显示。),如您在此图像中所见,请在此处输入图像描述
片段中没有出现。并滑动屏幕无法正常工作。它应该向左或向右移动摇杆,但停止在我停止移动手指的位置。
这是我的消息来源。
activity_main_board.xml
<RelativeLayout
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">
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/navigation"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true">
</FrameLayout>
<LinearLayout
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="7dp"
android:layout_weight="1"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:scaleType="fitXY"
app:srcCompat="@drawable/image_background7" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="53dp"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:id="@+id/my_board_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView10"
android:layout_width="30dp"
android:layout_height="30dp"
app:srcCompat="@drawable/ic_action_my" />
<TextView
android:id="@+id/textView34"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="MY"
android:textSize="10sp" />
</LinearLayout>
<LinearLayout
android:id="@+id/artwork_board_button"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center_vertical|center_horizontal"
android:orientation="vertical">
<ImageView
android:id="@+id/imageView13"
android:layout_width="30dp"
android:layout_height="30dp" …Run Code Online (Sandbox Code Playgroud) 我知道这个问题可能看起来重复,但我找不到解决我的问题的好方法。我将tablayout与 viewpager 一起使用,fragmentPagerAdapter作为 viewpager 的适配器。如您所知,viewpager不支持 rtl 布局,因此我在 rtl 语言环境中遇到了问题。我希望标签从右侧开始(第一个标签贴在屏幕右侧)并且用户可以正确滑动。我怎样才能做到这一点?有什么帮助吗?
我想从 MainActivity 调用 My Fragment 方法。我从这里找到了很好的解决方案。我正在学习android,所以没有太多技术知识。我的情况略有不同。我在用FragmentPagerAdapter在 MainActivity 中使用如下所示:
class ViewPagerAdapter extends FragmentPagerAdapter {\n private final List<Fragment> mFragmentList = new ArrayList<>();\n private final List<String> mFragmentTitleList = new ArrayList<>();\n\n ViewPagerAdapter(FragmentManager manager) {\n super(manager);\n }\n\n @Override\n public Fragment getItem(int position) {\n return mFragmentList.get(position);\n }\n\n @Override\n public int getCount() {\n return mFragmentList.size();\n }\n\n void addFragment(Fragment fragment, String title) {\n mFragmentList.add(fragment);\n mFragmentTitleList.add(title);\n }\n\n @Override\n public CharSequence getPageTitle(int position) {\n return mFragmentTitleList.get(position);\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n和我的ViewPager如下所示:
private void setupViewPager(ViewPager …Run Code Online (Sandbox Code Playgroud) java android android-fragments android-viewpager android-fragmentactivity
我有一个如下所示的 ViewPager:
当您滑动并仅保持中心视图的大小时,我需要侧面的预览以缩小,如下所示:
我已经尝试了一些示例,ViewPager.PageTransformer()但这些示例总是带有淡入淡出动画(我不需要)并且不显示预览(我需要)。
我在 ViewPager 中有一个片段,其创建如下:
companion object {
fun newInstance(someData: SomeData): ViewPagerFragment {
val f = ViewPagerFragment()
val args = Bundle()
args.putParcelable("someData", someData)
f.arguments = args
return f
}
}
Run Code Online (Sandbox Code Playgroud)
它也是一个 Hilt 入口点,它创建自己的 ViewModel,但也需要父 Fragments ViewModel,因此该类的顶部如下所示:
@AndroidEntryPoint
class ViewPagerFragment : Fragment() {
private val parentViewModel: ParentViewModel by viewModels(
ownerProducer = { requireParentFragment() }
)
private val viewPagerViewModel: ViewPagerViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)
但是,找不到父 Fragment:
java.lang.IllegalStateException: Fragment ViewPagerFragment{b6d6157}
(e5f3fc7d-2ae4-4275-9763-22826a9be939) id=0x7f09017e} is not a child Fragment, it is
directly attached to
dagger.hilt.android.internal.managers.ViewComponentManager$FragmentContextWrapper@1852444
Run Code Online (Sandbox Code Playgroud)
我认为发生这种情况是因为添加 viewPagerViewModel 后生成的 ViewPagerFragment …
android android-fragments android-viewpager android-viewmodel dagger-hilt
主要活动(片段活动)
public class RestaurantDetails extends FragmentActivity {
private static final String TAG = "ImageGridActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.restaurantinfo);
inicialize();
/* Adding fragment in a relativelayout */
if (getSupportFragmentManager().findFragmentByTag(TAG) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(R.id.fragment_container, new MapFragment(), TAG);
ft.commit();
}
/* Pager on bottom */
mPager.setCurrentItem(getIntent().getExtras().getInt("idRest"));
}
Run Code Online (Sandbox Code Playgroud)
布局主要活动
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="212dp"
tools:context=".MapFragment" />
<android.support.v4.view.ViewPager
android:id="@+id/pagerDetails"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
地图片段
public class MapFragment extends …Run Code Online (Sandbox Code Playgroud) java android android-layout android-fragments android-viewpager
我有一个视图寻呼机,当它在起始页面时显示内容,但当我们从抽屉活动中取出该页面时,它没有显示任何内容.任何人都可以帮我解决这个问题吗?
android fragment drawer android-viewpager android-recyclerview
我用ViewPager与NestedScrollView和RecyclerView。加载屏幕时,所有工作都很好,但首先要加载回收者视图,然后再用急速(不顺畅)的方式查看寻呼机,并且看起来不太好。
现在,我正在设计方面实现,而没有为视图分页器设置任何适配器。我没有为视图分页器或recyclerview填充数据。
Xml:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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"
android:orientation="vertical">
<hammerapps.views.CustomNestedScrollView
android:id="@+id/scroll_main"
android:layout_width="match_parent"
android:layout_gravity="fill_vertical"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/pager_banner"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/gray_bg"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginTop="24dp"
android:orientation="horizontal"
android:visibility="visible">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<hammerapps.views.TextViewKarlaRegular
android:id="@+id/txt_cat_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_marginTop="4dp"
android:text="EXPLORE"
android:textColor="@color/blue_color"
android:textSize="14dp" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_home_explore"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:orientation="vertical"
android:visibility="visible">
<hammerapps.views.TextViewKarlaBold
android:id="@+id/txt_cat1"
android:layout_width="match_parent" …Run Code Online (Sandbox Code Playgroud) android ×12
fragment ×2
java ×2
android-tabs ×1
dagger-hilt ×1
drawer ×1
gesture ×1
oncreate ×1
touch-event ×1