gpt4 book ai didi

java - 使用自定义适配器和扩展 PagerAdapter 使用 SmartTabLayout 设置选项卡标题

转载 作者:行者123 更新时间:2023-11-29 03:02:25 24 4
gpt4 key购买 nike

我有一个适用于我的 ViewPager 的自定义适配器,我想知道是否有任何方法可以使用 SmartTabLayout 设置每个选项卡的标题?我在那里和他们开了一张票,但我希望有人知道如何做到这一点。以下是我的自定义适配器:

public class CustomPagerAdapter extends PagerAdapter {

private int[] image_resources = {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3,
R.drawable.image4,
R.drawable.image5,
};

private Context ctx;
private LayoutInflater layoutInflater;
public CustomPagerAdapter(Context ctx) {
this.ctx = ctx;
}

@Override
public int getCount() {
return image_resources.length;
}

@Override
public boolean isViewFromObject(View view, Object o) {
return (view == (RelativeLayout) o);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View item_view = layoutInflater.inflate(R.layout.pager_item, container, false);
ImageView imageview = (ImageView) item_view.findViewById(R.id.image_view);
imageview.setImageResource(image_resources[position]);
container.addView(item_view);
return item_view;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((RelativeLayout) object);
}
}

这是我设置 ViewPager 的方式,也是我启动 SmartTabLayout 的地方:

 final ViewPager viewPager;
CustomPagerAdapter adapter;
viewPager = (ViewPager) findViewById(R.id.view_pager);
adapter = new CustomPagerAdapter(context);
viewPager.setAdapter(adapter);

SmartTabLayout viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab);
viewPagerTab.setViewPager(viewPager);

我想我也应该包括我的 XML 的相关部分:

<com.ogaclejapan.smarttablayout.SmartTabLayout
android:id="@+id/viewpagertab"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#fff"
app:stl_indicatorAlwaysInCenter="false"
app:stl_indicatorWithoutPadding="false"
app:stl_indicatorInFront="false"
app:stl_indicatorInterpolation="smart"
app:stl_indicatorGravity="bottom"
app:stl_indicatorColor="#33ffcc"
app:stl_indicatorThickness="4dp"
app:stl_indicatorCornerRadius="2dp"
app:stl_overlineColor="#4D000000"
app:stl_overlineThickness="0dp"
app:stl_underlineColor="#4D000000"
app:stl_underlineThickness="1dp"
app:stl_dividerColor="#4D000000"
app:stl_dividerThickness="1dp"
app:stl_defaultTabBackground="?attr/selectableItemBackground"
app:stl_defaultTabTextAllCaps="true"
app:stl_defaultTabTextColor="#FC000000"
app:stl_defaultTabTextSize="12sp"
app:stl_defaultTabTextHorizontalPadding="16dp"
app:stl_defaultTabTextMinWidth="0dp"
app:stl_distributeEvenly="false"
app:stl_clickable="true"
app:stl_titleOffset="24dp"
app:stl_drawDecorationAfterTab="false"
/>

<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="500dp"
android:clickable="false"
android:layout_below="@id/viewpagertab"
android:scaleType="centerCrop" />

它实际上工作正常,但我无法使用 getPageTitle() 以标准方式设置标题,所以它们显示为空白。我想继续使用 SmartTabLayout,因为它在美学上非常吸引人。默认的寻呼机标题太可怕了!

最佳答案

据我了解文档,您需要一个 FragmentPagerItemAdapter 并调用 .add("title", class):

FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter(
getSupportFragmentManager(), FragmentPagerItems.with(this)
.add(R.string.titleA, PageFragment.class) // I assume titles are set here.
.add(R.string.titleB, PageFragment.class)
.create());

那么,您只需要调用 adapter.add(...)

编辑:查看演示应用程序 - 我认为您需要扩展 FragmentPagerItemAdapter 而不是简单的 PagerAdapter

关于java - 使用自定义适配器和扩展 PagerAdapter 使用 SmartTabLayout 设置选项卡标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com