PagerTabStrip с иконкой
Я реализую 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>
MainActivity.java
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;
Помогите мне, как я могу изменить значок селектора при смене вкладки
1 ответ
Вы не можете ссылаться на этот путь внутри веб-просмотра. Вам, вероятно, нужно сохранить свой CSS-файл в папке активов и динамически обращаться к нему:
поместите CSS в папку ресурсов, выполните манипуляции с HTML, но обратитесь к CSS по относительному пути и загрузите HTML в WebView с помощью метода loadDataWithBaseURL():
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);