java - ViewPager2 的点指示器不显示
问题描述
我正在使用带有静态数字 od 页面的简单 ViewPager2,我想在其中添加点指示器。我发现了很多示例如何做到这一点,并且我已经使用TabLayouMediator在页面底部有工作指示器,但我看不到这些点。当我点击到指示器应该所在的位置时,它会切换页面并且按钮单击的效果是可见的。无论如何,我看不到默认和活动的点图像。点指示符用于stackoverflow 教程。
既然指标可以切换页面,我认为TabLayouMediator的实现是正确的。另外我认为该指示器没有被任何布局覆盖,因为我可以使用它并且我看到了点击效果。关于这一点,我认为问题出在 TabLayout 中,但我无法识别。
以下是我的代码。非常感谢您的帮助。
活动.java
TabLayout tabLayout = findViewById(R.id.tab_layout);
TabLayoutMediator tabLayoutMediator = new TabLayoutMediator(tabLayout, viewPager2, true, new TabLayoutMediator.TabConfigurationStrategy() {
@Override
public void onConfigureTab(@NonNull TabLayout.Tab tab, int position) { }
});
tabLayoutMediator.attach();
活动.xml
<?xml version="1.0" encoding="utf-8"?>
<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"
android:layout_gravity="center"
android:layout_margin="10dp"
android:orientation="vertical">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/TutorialSmartphone_Cl_Header"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.constraintlayout.widget.Guideline
android:id="@+id/TutorialSmartphone_Gl_Header"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintGuide_end="30dp" />
<ImageView
android:id="@+id/TutorialSmartphone_Iv_Logo"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
app:layout_constraintBottom_toTopOf="@+id/TutorialSmartphone_Gl_Header"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/logo" />
<Switch
android:id="@+id/TutorialSmartphone_Sw_ShowNextTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:scrollbarSize="10dp"
app:layout_constraintBottom_toTopOf="@+id/TutorialSmartphone_Gl_Header"
app:layout_constraintEnd_toEndOf="parent" />
<TextView
android:id="@+id/TutorialSmartphone_Tv_ShowNextTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="showNextTime"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/TutorialSmartphone_Gl_Header" />
</androidx.constraintlayout.widget.ConstraintLayout>
<RelativeLayout
android:id="@+id/TutorialSmartphone_Rl_ViewerPage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/TutorialSmartphone_Rl_Buttons"
android:layout_below="@+id/TutorialSmartphone_Cl_Header"
android:layout_marginTop="0dp"
android:layout_marginBottom="0dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/TutorialSmartphone_Rl_Buttons">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/TutorialSmartphone_Vp_Text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginStart="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="0dp"
android:layout_marginRight="0dp"
android:layout_marginBottom="20dp" />
</RelativeLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/TutorialSmartphone_Rl_Buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:layout_marginEnd="0dp"
android:layout_marginRight="0dp"
android:orientation="vertical">
<ImageView
android:id="@+id/TutorialSmartphone_Iv_Prev"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="false"
android:layout_marginStart="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="20dp"
android:background="@drawable/buttonshape"
android:onClick="prevPage"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:rotation="180"
android:scaleType="fitEnd"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/triangle" />
<ImageView
android:id="@+id/TutorialSmartphone_Iv_Next"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="false"
android:layout_marginTop="0dp"
android:layout_marginEnd="0dp"
android:layout_marginRight="0dp"
android:layout_marginBottom="20dp"
android:background="@drawable/buttonshape"
android:onClick="nextPage"
android:paddingTop="2dp"
android:paddingBottom="2dp"
android:scaleType="fitEnd"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:srcCompat="@drawable/triangle" />
<Button
android:id="@+id/TutorialSmartphone_Bt_Close"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="false"
android:layout_marginTop="0dp"
android:layout_marginEnd="0dp"
android:layout_marginRight="0dp"
android:layout_marginBottom="20dp"
android:background="@drawable/buttonshape"
android:onClick="nextPage"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:scaleType="fitEnd"
android:text="closeVerb"
android:textAllCaps="false"
android:textColor="@color/white"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/TutorialSmartphone_Iv_Next"
app:layout_constraintStart_toEndOf="@id/TutorialSmartphone_Iv_Prev"
app:tabBackground="@drawable/tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp" />
</androidx.constraintlayout.widget.ConstraintLayout>
</RelativeLayout>
tab_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/selected_dot"
android:state_selected="true"/>
<item android:drawable="@drawable/default_dot"/>
</selector>
selected_dot.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/black"/>
</shape>
</item>
</layer-list>
default_dot.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape
android:innerRadius="0dp"
android:shape="ring"
android:thickness="8dp"
android:useLevel="false">
<solid android:color="@color/gray"/>
</shape>
</item>
</layer-list>
解决方案
所以两周后我发现了问题。在我删除的 styles.xml 中<item name="android:background">@color/white</item>
,现在一切都很好。感谢@Sozsoy,我尝试用我的代码创建新项目并比较可能导致问题的原因。
推荐阅读
- uiimage - 分配原始图像而不是在字符串中获取 UIImage
- asp.net-core - Aspose.Words 将 Word 文档保存为 pdf 格式丢失
- amazon-web-services - 如何在应用程序发布时自动更新 Terraform 项目中的应用程序版本?
- javascript - 将动态 onChange 侦听器传递给孩子
- vba - 在工作名称更改时将数据透视源文件更新到特定表源
- javascript - 导出要在 JSX 标签中使用的 React 组件
- xcode - Unrecognized selector with UITapGestureRecognizer
- asp.net - DotNetNuke mvc 在 SelectList 更改时填写表单项
- c - Unable to read PCI BAR from kernel mode
- javascript - 为什么 includes() 在我的代码中不能正常工作?