Как изменить изображения вкладок в TabHost
Я использую TabHost в своем приложении, я использую четыре вкладки в своем приложении, и я хочу использовать разные изображения в TabHost, когда специальная вкладка выбрана и не выбрана. Мне нужно использовать разные изображения для каждой отдельной вкладки.
Когда я выбираю любую вкладку, изображение немного яркое, и когда я переключаюсь на другую вкладку, яркое изображение становится серым.
Я реализовал TabHost, но не знаю, как изменить изображения в TabHost.
Может ли кто-нибудь помочь мне в этом.
Спасибо,
Дэвид
Ответы
Ответ 1
Если вы хотите использовать разные изображения для выбранных и невыделенных состояний, тогда создайте XML файлы 'selector' в папке drawables для каждой вкладки, например. tab1_selector.xml, tab2_selector.xml, который должен содержать следующее, заменяя ссылочные ссылки на ваши изображения для выбранных и невыбранных состояний. то есть.
<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_selected="true"
android:drawable="@drawable/tab1_selected_image" />
<item
android:state_selected="false"
android:drawable="@drawable/tab2_unselected_image" />
</selector>
Затем, используя метод .setIndicator, описанный выше, вы должны ссылаться на свой новый ресурс, который вы используете для xml.
Ответ 2
Прежде всего, у вас должны быть два изображения, потому что вы хотите переходить от одного к другому, поэтому вам нужны оба изображения, и вы должны поместить его в три папки с возможностью рисования.
В моем примере у меня есть изображения, называемые icon1.png и icon2.png.
После этого создайте xml файл внутри выпадающих папок (тот же файл для всех доступных папок). Это файл:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use icon1 -->
<item android:drawable="@drawable/icon1"
android:state_selected="true" />
<!-- When not selected, use icon2-->
<item android:drawable="@drawable/icon2" />
</selector>
Вы можете выбрать, какое изображение будет отображаться при выборе вкладки. В этом случае появится значок icon1, потому что мы объявили его в теге, где state_selected = true.
Итак, теперь у вас есть два изображения и xml файл внутри трех доступных папок. Ok!
Теперь, в классе, который вы объявляете вкладки, добавьте эту строку для каждой вкладки, которую вы хотите добавить.
tabHost.addTab(tabHost
.newTabSpec("one")
.setIndicator("The Tab",
res.getDrawable(R.drawable.yourxmlfile))
.setContent(new Intent(this, YourClass.class)));
Помните, что R.drawable.yourxmlfile соответствует файлу xml, созданному в папках с возможностью переноса.
Что это! Надеюсь, это поможет вам.
Ответ 3
Чтобы установить текст и значок, нам нужно использовать свойство setIndicator.
tabSpec.setIndicator(Char,Drawable);
firstTabSpec.setIndicator("First Tab Name", getResources().getDrawable(R.drawable.logo));
secondTabSpec.setIndicator("Second Tab Name",getResources().getDrawable(R.drawable.logo));
используйте это, чтобы установить отдельное изображение для каждой вкладки
Ответ 4
Создайте XML файл селектора tabicon.xml и поместите этот код
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_enbled" android:state_selected="true"/>
<item android:drawable="@drawable/tab_default" android:state_selected="false"/>
</selector>
перейдите в свою TabActivity и поместите этот код
TabSpec MyTab = tabhost.newTabSpec("MyTab");
MyTab.setIndicator("", getResources().getDrawable(R.drawable.tabicon));
//note:if you give some text in setIndicator sometimes the icon will not be showed.
Intent tabIntent = new Intent(this, TabOne.class);
TWTTab.setContent(tabIntent);
Ответ 5
В this В учебнике TabLayout разные изображения используются, когда вкладка выбрана и не выбрана.
В принципе вам нужно создать Statelist. Здесь код для него с сайта разработчика
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- When selected, use grey -->
<item android:drawable="@drawable/ic_tab_artists_grey"
android:state_selected="true" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/ic_tab_artists_white" />
</selector>
Также устанавливается setIndicator (CharSequence, Drawable) для установки текста и значка для вкладки.
Ответ 6
эти коды показывают, как установить значок в узле вкладки, а также установить намерение
TabHost tabHost = getTabHost();
// Tab for Photos
TabSpec photospec = tabHost.newTabSpec("Photos");
// setting Title and Icon for the Tab
photospec.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.icon_photos_tab));
Intent photosIntent = new Intent(this, PhotosActivity.class);
photospec.setContent(photosIntent);
// Tab for Songs
TabSpec songspec = tabHost.newTabSpec("Songs");
songspec.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.icon_songs_tab));
Intent songsIntent = new Intent(this, SongsActivity.class);
songspec.setContent(songsIntent);
// Tab for Videos
TabSpec videospec = tabHost.newTabSpec("Videos");
videospec.setIndicator("", getApplicationContext().getResources().getDrawable(R.drawable.icon_videos_tab));
Intent videosIntent = new Intent(this, VideosActivity.class);
videospec.setContent(videosIntent);
// Adding all TabSpec to TabHost
tabHost.addTab(photospec); // Adding photos tab
tabHost.addTab(songspec); // Adding songs tab
tabHost.addTab(videospec); // Adding videos tab
Ответ 7
Вы можете использовать ImageButton лучше, потому что изображение может быть выбрано и не выбрано, а ImageButton может быть выбран не выбранным и нажатым, а другие....
Ответ 8
@Suchismita лучше использовать TextView вместо TabActivity.
Я столкнулся с следующими проблемами в табастильности
-
Я не мог запустить другую активность на одной вкладке, это серьезная проблема, с которой я столкнулся.
-
next настраивает представление вкладки, я не могу изменить разделитель.
- И TabActivity устарела в ICS
Далее, используя TextView, я обнаружил, что он очень легко обрабатывает события и поток активности. Здесь вы полностью контролируете поведение приложения, а также можете настроить внешний вид вкладки, но вы хотите.
Вас интересует, как реализовать?
Ответ 9
Если вы хотите изменить изображение вкладки программно, то:
ImageView yourImage= (ImageView)mTabHost.getTabWidget().getChildTabViewAt(youtTabPosition).findViewById(android.R.id.icon);
yourImage.setImageResource(R.drawable.ic_more_vert_white_24dp);