首页 > 解决方案 > tablayout 的屏幕截图程序不会发生在第 4 个和更高的选项卡上

问题描述

以下代码用于捕获布局并保存。如果选项卡计数小于 3,则此代码可以完美运行。如果我的选项卡计数超过 3,则对于前 3 个它可以工作,但对于后面的, View s 的值为空。变量 currentposition 将具有选项卡编号。例如,如果我正在查看第 8 个选项卡,则当前位置值为 7。

View s = viewPager.getChildAt(currentposition);
if( s == null) return false;
s.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
Drawable drawable = getWindow().getDecorView().getBackground();
Bitmap primaryMap = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
s.layout(0, 0, s.getMeasuredWidth(), s.getMeasuredHeight());
drawable.setBounds(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
Canvas cvas = new Canvas(primaryMap);
drawable.draw(cvas);
File shareFile = saveImages(primaryMap);

我的 tablayout.xml 如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <com.google.android.material.tabs.TabLayout
        style="@style/MyTabLayout"
        android:layout_marginTop="@dimen/dp3"
        android:layout_width="match_parent"
        android:layout_height="@dimen/dp20"
        android:background="@color/ORANGE"
        app:tabMode="scrollable"
        android:id="@+id/tab_options" />

    <!-- <android.support.v4.view.ViewPager !-->
    <androidx.viewpager.widget.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

同样有趣的是,即使有 10 个以上的选项卡, viewPager.getChildCount 也只给出了 2 个。添加标签的代码如下

TabLayout tab =  findViewById(R.id.tab_panchanga);
tab.setTabGravity(TabLayout.GRAVITY_FILL);
tab.setTabTextColors(Color.BLACK,Color.WHITE);
tab.addTab(tab.newTab().setText("1st Tab"));
tab.addTab(tab.newTab().setText("2nd Tab"));
tab.addTab(tab.newTab().setText("3rd Tab"));
tab.addTab(tab.newTab().setText("4th Tab"));
tab.addTab(tab.newTab().setText("5th Tab"));
tab.addTab(tab.newTab().setText("6th Tab"));
ViewPager viewPager =  findViewById(R.id.pager);
Pager p = new Pager(getSupportFragmentManager(),tab.getTabCount());
viewPager.setAdapter(p);
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tab));

我在这里错过了什么吗?

标签: androidandroid-fragmentsandroid-viewpager

解决方案


问题得到了解决。我保存每个选项卡的片段视图。这样我可以保存整个布局。


推荐阅读