我正在尝试使用Android数据绑定为TabLayout实现自定义视图。
我有设置数据绑定器,它使用数据绑定为选项卡设置视图分页器和适配器,但由于FragmentPagerAdapter没有用于自定义视图的任何替代方法。
数据绑定器:
@BindingAdapter("headline_frag_handler")
public static void bindViewPagerAdapter(final ViewPager viewPager, TabActivity activity){
final HomeFragmentTabAdapter adapter = new HomeFragmentTabAdapter(activity.getApplicationContext(), activity.getSupportFragmentManager());
viewPager.setAdapter(adapter);
}
@BindingAdapter("headline_frag_pager")
public static void bindViewPagerTabs(final TabLayout view, final ViewPager pagerView){
view.setupWithViewPager(pagerView, true);
}
XML
<com.google.android.material.tabs.TabLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/headline_frag_tab_layout"
android:layout_alignParentTop="true"
app:headline_frag_pager="@{pager}"
/>
<androidx.viewpager.widget.ViewPager
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/headline_frag_view_pager"
android:layout_below="@+id/headline_frag_tab_layout"
android:background="?attr/headline_fragment_view_pager"
app:headline_frag_handler="@{handler}"
/>
FragmentPager适配器
@Override
public Fragment getItem(int position) {
switch (TABS[position]){
case MAIN:
return new MainHeadlineFragment();
case PLATFORM:
return new PlatformFragment();
}
return new MainHeadlineFragment();
}
@Override
public int getCount() {
return TABS.length;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
switch (TABS[position])
{
case MAIN:
return "MAIN";
case PLATFORM:
return "Platform";
}
return null;
}
public View getTabView(int position) {
View v = LayoutInflater.from(mContext).inflate(R.layout.top_tab_item, null);
TextView tv = (TextView) v.findViewById(R.id.top_tab_text);
tv.setText(TABS[position]);
return v;
}
我正在使用自定义视图更新TabLayout。