Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 像这样设计一个视图寻呼机指示器_Android_Android Viewpager_Viewpagerindicator - Fatal编程技术网

Android 像这样设计一个视图寻呼机指示器

Android 像这样设计一个视图寻呼机指示器,android,android-viewpager,viewpagerindicator,Android,Android Viewpager,Viewpagerindicator,我正在创建一个视图寻呼机指示器,如下图所示,其中图标在单击时滚动到中心,我如何实现这一点,我尝试了视图寻呼机指示器和选项卡式布局,但没有成功 public class CenteringTabLayout扩展了TabLayout{ public class CenteringTabLayout extends TabLayout { private Typeface mTypeface; public CenteringTabLayout(Context context) { supe

我正在创建一个视图寻呼机指示器,如下图所示,其中图标在单击时滚动到中心,我如何实现这一点,我尝试了视图寻呼机指示器和选项卡式布局,但没有成功

public class CenteringTabLayout扩展了TabLayout{
public class CenteringTabLayout extends TabLayout {
private Typeface mTypeface;

public CenteringTabLayout(Context context) {
    super(context);
}

public CenteringTabLayout(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CenteringTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
}



@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    super.onLayout(changed, l, t, r, b);
    View firstTab = ((ViewGroup) getChildAt(0)).getChildAt(0);
    View lastTab = ((ViewGroup) getChildAt(0)).getChildAt(((ViewGroup) getChildAt(0)).getChildCount() - 1);
   if(firstTab!=null)

    ViewCompat.setPaddingRelative(getChildAt(0), (getWidth() / 2) - (firstTab.getWidth() / 2), 0, (getWidth() / 2) - (lastTab.getWidth() / 2), 0);

}

@Override
public void addOnTabSelectedListener(@NonNull OnTabSelectedListener listener) {
    super.addOnTabSelectedListener(listener);

}

@Override
public void addTab(@NonNull Tab tab) {
    super.addTab(tab);
    ViewGroup mainView = (ViewGroup) getChildAt(0);
    ViewGroup tabView = (ViewGroup) mainView.getChildAt(tab.getPosition());

    int tabChildCount = tabView.getChildCount();
    for (int i = 0; i < tabChildCount; i++) {
        View tabViewChild = tabView.getChildAt(i);
        if (tabViewChild instanceof TextView) {
            ((TextView) tabViewChild).setTypeface(mTypeface, Typeface.NORMAL);
        }
    }
}
}
私人字体; 公共中心布局(上下文){ 超级(上下文); } 公共中心布局(上下文、属性集属性){ 超级(上下文,attrs); } 公共中心可布局(上下文上下文、属性集属性、int defStyleAttr){ super(上下文、attrs、defStyleAttr); } @凌驾 仅受保护的void布局(布尔值已更改、int l、int t、int r、int b){ 超级在线布局(更改,l,t,r,b); View firstTab=((视图组)getChildAt(0)).getChildAt(0); 查看lastTab=((视图组)getChildAt(0)).getChildAt(((视图组)getChildAt(0)).getChildCount()-1); if(firstTab!=null) ViewCompat.setPaddingRelative(getChildAt(0),(getWidth()/2)-(firstTab.getWidth()/2),0,(getWidth()/2)-(lastTab.getWidth()/2),0); } @凌驾 public void addOnTabSelectedListener(@NonNull OnTabSelectedListener listener){ super.addOnTabSelectedListener(listener); } @凌驾 public void addTab(@NonNull Tab){ super.addTab(tab); 视图组主视图=(视图组)getChildAt(0); 视图组tabView=(视图组)mainView.getChildAt(tab.getPosition()); int tabChildCount=tabView.getChildCount(); 对于(int i=0;i
将此布局粘贴到java类中。 在xml设计中使用居中tablayout而不是tablayput

公共类居中tablayout扩展了tablayout{
私人字体;
公共中心布局(上下文){
超级(上下文);
}
公共中心布局(上下文、属性集属性){
超级(上下文,attrs);
}
公共中心可布局(上下文上下文、属性集属性、int defStyleAttr){
super(上下文、attrs、defStyleAttr);
}
@凌驾
仅受保护的void布局(布尔值已更改、int l、int t、int r、int b){
超级在线布局(更改,l,t,r,b);
View firstTab=((视图组)getChildAt(0)).getChildAt(0);
查看lastTab=((视图组)getChildAt(0)).getChildAt(((视图组)getChildAt(0)).getChildCount()-1);
if(firstTab!=null)
ViewCompat.setPaddingRelative(getChildAt(0),(getWidth()/2)-(firstTab.getWidth()/2),0,(getWidth()/2)-(lastTab.getWidth()/2),0);
}
@凌驾
public void addOnTabSelectedListener(@NonNull OnTabSelectedListener listener){
super.addOnTabSelectedListener(listener);
}
@凌驾
public void addTab(@NonNull Tab){
super.addTab(tab);
视图组主视图=(视图组)getChildAt(0);
视图组tabView=(视图组)mainView.getChildAt(tab.getPosition());
int tabChildCount=tabView.getChildCount();
对于(int i=0;i
将此布局粘贴到java类中。 在xml设计中使用居中的tablayout而不是tablayput

我建议您使用


也检查


我建议您使用


也检查



这很好,但我想创建它,这样你就可以得到你想要的结果。这很好,但我想创建它,这样你就可以得到你想要的结果
 <com.roughike.bottombar.BottomBar
        android:id="@+id/bottomBar"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_alignParentBottom="true"
        app:bb_tabXmlResource="@xml/bottombar_tabs" />
<it.sephiroth.android.library.bottomnavigation.BottomNavigation
        android:id="@+id/BottomNavigation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        app:bbn_entries="@menu/bottombar_menu_4items"
        app:bbn_scrollEnabled="true"
        app:bbn_badgeProvider="@string/bbn_badgeProvider"
        app:layout_behavior="@string/bbn_phone_view_behavior" />