Android 带图标的页面选项卡

Android 带图标的页面选项卡,android,android-viewpager,pagertabstrip,Android,Android Viewpager,Pagertabstrip,我实现了带有图标的PagerTabStrip,它可以正常工作。但我需要在更改选项卡时,将当前选项卡图标更改为所选图像 在我的代码下面 我的可绘制图标选择器代码 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_home_selected" android:state_selected="true" /> <

我实现了带有图标的PagerTabStrip,它可以正常工作。但我需要在更改选项卡时,将当前选项卡图标更改为所选图像

在我的代码下面

我的可绘制图标选择器代码

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_home_selected" android:state_selected="true" />
<item android:drawable="@drawable/ic_home_normal" android:state_selected="false" />
<item android:drawable="@drawable/ic_home_normal" />
</selector>

帮助我如何在选项卡更改时更改选择器图标

您不能在webview中引用此路径。您可能需要将css文件存储在assets文件夹中,并动态引用它:

将CSS放在assets文件夹中,使用HTML进行操作,但通过相对路径引用CSS,并通过loadDataWithBaseURL()方法将HTML加载到WebView:

webView.loadDataWithBaseURL(“file:///android_asset/,htmlString,“text/html”,“utf-8”,null);
例如,您拥有styles.css文件,将其放入资产文件夹,创建HTML并加载:
StringBuilder sb=新的StringBuilder();
某人加上(“”);
sb.append(tables.toString());
某人加上(“”);
webView.loadDataWithBaseURL(“file:///android_asset/,sb.toString(),“text/html”,“utf-8”,null);

在谷歌上很容易找到
    viewPager = (ViewPager) findViewById(R.id.pager);
    tabs = (PagerTabStrip) findViewById(R.id.tabs);
    fragments = new ArrayList<>();
    fragments.add(R.drawable.menu_home_bg);
    fragments.add(R.drawable.menu_likes_bg);
    fragments.add(R.drawable.menu_matches_bg);
    fragments.add(R.drawable.menu_home_bg);
    pageAdapter = new TabPagerAdapter(getApplicationContext(), getSupportFragmentManager(), fragments);
    viewPager.setAdapter(pageAdapter);
    Drawable image;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        image = context.getResources().getDrawable(tabIcon.get(position), context.getTheme());
    } else
        image = context.getResources().getDrawable(tabIcon.get(position));
    if (image != null)
        image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
    SpannableStringBuilder sb = new SpannableStringBuilder(" ");
    ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
    sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    return sb;
webView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "utf-8", null);
E.g. you have styles.css file, put it to assets folder, create HTML and load it:

StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><LINK href=\"styles.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
sb.append(tables.toString());
sb.append("</body></HTML>");
webView.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html","utf-8", null);