我在我的视图中使用谷歌的SlidingTabLayout,但我想在标签中添加图标.我正在使用这个http://developer.android.com/samples/SlidingTabsBasic/src/com.example.android.common/view/SlidingTabLayout.html 任何人都可以帮忙吗?
void setUpPager(View view){
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPager.setAdapter(new TabsPagerAdapter(getActivity()));
mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);
}
Run Code Online (Sandbox Code Playgroud)
这是我的xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.common.view.SlidingTabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud) android android-layout android-tabs pagerslidingtabstrip android-tabstrip
我试图在SlidingTabLayout上显示图标,所以在我的适配器中创建了类似这样的内容,我在寻找教程的某个时候找到了它,所以我编辑了将使用getDrawable的部分,因为它说它已经被弃用并且应用我发现的解决方案
@Override
public CharSequence getPageTitle(int position) {
Drawable image = ResourcesCompat.getDrawable(mContext.getResources(), icons[position], null);
image.setBounds(0, 0, 48, 48);
SpannableString sb = new SpannableString(" ");
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
Run Code Online (Sandbox Code Playgroud)
我也在我的适配器上声明了它,我已经在这里检查是否确实将它放在可绘制对象上,并且所有这些都在那里。
private int[] icons = {
R.drawable.tabone,
R.drawable.tabtwo,
R.drawable.tabthree,
R.drawable.tapfour,
R.drawable.tabfive
};
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么,但我总是遇到这个错误
Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
即使我声明一个变量来处理图像。谁能帮助我,我的最低版本为14,目标sdk为22。谢谢。
这是我的适配器代码
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
CharSequence Titles[];
int NumbOfTabs;
Context mContext;
private int[] icons = { …Run Code Online (Sandbox Code Playgroud)