android - 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));
我在这里错过了什么吗?
解决方案
问题得到了解决。我保存每个选项卡的片段视图。这样我可以保存整个布局。
推荐阅读
- html - bootstrap withword 新闻集成
- git - 如何将 GitHub 存储库恢复为某个提交
- r - 如何使用每个向量的元素名称将多个向量组合成一个数据框(在 R 中)
- r - ggplot2 - 如何通过值而不是按字母顺序重新排列带有标签的堆积条形图数据点
- android - 无法加载 AppCompat ActionBar 并出现未知错误?
- xml - xslt:通过 id 递归合并元素
- asp.net - VS17 中的 Nuget 包显示警告标志且未下载
- dart - 有没有一种方法,使用 Firestorage,将集合转换为地图列表,而不需要 Streambuilder/widget?
- google-apps-script - 在 Google Docs 文件中获取 ListItem 的父级
- unity3d - Unity在C#中更改2个子对象中的文本