У меня есть TabHost с 5 вкладками. Насколько я вижу, должна быть одна вкладка, выбранная в любое время.
Мне нужен способ отменить выбор всех моих вкладок, чтобы никто не был выбран.
Если табус подразумевается под общим для того, чтобы одна вкладка была выбрана во все времена, как я могу заставить ее отображаться (речь на языке UI), как если бы вкладка не была выбрана?
Это невозможно AFAIK. но да, вы можете установить выбранный цвет табуляции, чтобы он выглядел так, как будто он не выбран и устанавливает пустой макет поверх него, управляя глобальной переменной, когда вы делаете ее "невыбранной" и настраиваете нормальный макет, когда вы хотите, чтобы он отображался нормально для пользователя, Но это своего рода трюк.
Надеюсь, ты получишь мою мысль!
РЕДАКТИРОВАТЬ :
Предположим, вы String what="disappear"
где-то в вашем коде, чтобы показать его "unselected", и вы можете использовать эту функцию для изменения цвета вкладки:
Main.class:
//Change The Backgournd Color of Tabs
public void setTabColor(TabHost tabhost) {
for(int i=0;i<tabhost.getTabWidget().getChildCount();i++)
{
tabhost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#FFFFFF"))); //unselected white colored
}
if(!what.equals("disappear"))
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(Color.parseColor("FF0000"))); // selected red colored
else
tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(Color.parseColor("FFFFFF"))); // selected but show as unselected with white color
}
И в вашем классе активности (который открывается этой выбранной вкладкой):
FirstActivity.class:
if(what.equals("disappear"))
setContentView(R.layout.blank);
else
setContentView(R.layout.first_layout);
blank.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/layout"
android:background="#ffffff"
android:gravity="center">
<!-- You can make background transperent by setting it to "00ffffff" -->
<!-- You can also add this textview to guide user -->
<!--
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Click Any Tab To Start
/>
-->
</LinearLayout>
попробуй это:
final TabWidget tabWidget = tabHost.getTabWidget();
final int n = tabWidget.getChildCount();
for (int i = 0; i < n; ++i) {
tabWidget.getChildAt(i).setSelected(false);
}
или вы можете добавить скрытую вкладку и выбрать ее, если хотите отменить выбор вкладки
tabHost.addTab(
tabHost.newTabSpec("hiddenTab").setIndicator(""),
MyFragment.class,
null
);
tabHost.getTabWidget().getChildTabViewAt(hiddenTabIndex).setVisibility(View.GONE);
и выберите эту вкладку, когда захотите
tabHost.setCurrentTab(hiddenTabIndex);
С этой целью, возможно, использование tabHost не является правильным способом?
View.GONE
), ожидаемом, который вы хотите показать. Но вам придется создать свой собственный макет, содержащий заголовки вкладок, поэтому, когда вы захотите отменить выбор всех вкладок, вы сможете установить желаемый фон для заголовков вкладок. Это не совсем чисто, но это работает. Надеюсь, вам не придется этого делать;)