Does anybody know how to hide a component from an inflated layout? I have the following code:
View tabLayout = LayoutInflater.from(this).inflate(R.layout.tab_layout, null);
FrameLayout profile_tab_selected_indicator =
(FrameLayout)tabLayout.findViewById(R.id.profile_tab_selected_indicator);
and when I'm trying to hide it by using:
profile_tab_selected_indicator.setVisibility(View.GONE);
it doesn't work. It looks like I'm missing something or it's not possible to hide xml components from the inflated layouts. I've also tried to set the width and height to 0dp
via the LayoutParams
and it doesn't work as well.
In a custom function outside of the onCreate()
like this:
public static View tabLayout;
protected void onCreate(){
//some code here
buildTabLayout();
}
public void buildTabLayout(){
tabLayout = LayoutInflater.from(this).inflate(R.layout.tab_layout, null);
}
Then I'm trying to hide it here:
public void onTabChanged(String tabId) {
FrameLayout profile_tab_selected_indicator = (FrameLayout)tabLayout.findViewById(R.id.profile_tab_selected_indicator);
profile_tab_selected_indicator.setVisibility(View.GONE);
}
Here's the xml code of the inflated layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/profile_tab_bar_bg"
android:gravity="center"
android:orientation="vertical" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/profile_top_bar_shadow_xml" >
</FrameLayout>
<ImageView
android:id="@+id/iv_tabIcon"
android:layout_width="30dp"
android:layout_height="30dp" />
<TextView
android:id="@+id/tv_tabTitle"
style="@style/ProfileTabLabelsStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@drawable/profile_tab_label_selector" />
<FrameLayout
android:id="@+id/profile_tab_selected_indicator"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@color/ProfileTabSelected" >
</FrameLayout>
</LinearLayout>
EDIT:
All the code responsible for my tab layout:
// tabs labels
public static String[] tabsTitles = new String[] { "PROFILE", "CAMPAIGNS",
"STATISTICS" };
public static View tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.vw_profile);
// initializing xml components
init();
// Tab Layut builder
buildTabLayout();
}
private void buildTabLayout() {
// TODO Auto-generated method stub
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
tabHost.setOnTabChangedListener(this);
TabHost.TabSpec spec; // Resusable TabSpec for each tab
View tabLayout; // tabLayout
Intent intent; // Reusable Intent for each tab
// PROFILE TAB
tabLayout = createTabLayout(this, tabsTitles[0]);
intent = new Intent().setClass(this, VieweedsProfileTabActivity.class);
spec = tabHost.newTabSpec(tabsTitles[0]).setIndicator(tabLayout)
.setContent(intent);
tabHost.addTab(spec);
// CAMPAIGNS TAB
tabLayout = createTabLayout(this, tabsTitles[1]);
intent = new Intent()
.setClass(this, VieweedsCampaignsTabActivity.class);
spec = tabHost.newTabSpec(tabsTitles[1]).setIndicator(tabLayout)
.setContent(intent);
tabHost.addTab(spec);
// STATISTICS TAB
tabLayout = createTabLayout(this, tabsTitles[2]);
intent = new Intent().setClass(this,
VieweedsStatisticsTabActivity.class);
spec = tabHost.newTabSpec(tabsTitles[2]).setIndicator(tabLayout)
.setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
FrameLayout profile_tab_selected_indicator = (FrameLayout)tabLayout.findViewById(R.id.profile_tab_selected_indicator);
FrameLayout campaigns_tab_selected_indicator = (FrameLayout)tabLayout.findViewById(R.id.campaigns_tab_selected_indicator);
if (tabId.equals(tabsTitles[0])) {
// profile tab
Toast.makeText(this, tabId, Toast.LENGTH_LONG).show();
profile_tab_selected_indicator.setVisibility(View.VISIBLE);
campaigns_tab_selected_indicator.setVisibility(View.GONE);
} else if (tabId.equals(tabsTitles[1])) {
// campaigns tab
Toast.makeText(this, tabId, Toast.LENGTH_LONG).show();
profile_tab_selected_indicator.setVisibility(View.GONE);
campaigns_tab_selected_indicator.setVisibility(View.VISIBLE);
} else {
Toast.makeText(this, tabId, Toast.LENGTH_LONG).show();
// statistics tab
}
}
// creating tab layout for each tab
public static View createTabLayout(Context c, String tabTitleText){
tabLayout = LayoutInflater.from(c).inflate(R.layout.tab_layout, null);
TextView tabTitle = (TextView)tabLayout.findViewById(R.id.tv_tabTitle);
tabTitle.setTypeface(arial);
ImageView tabIcon = (ImageView)tabLayout.findViewById(R.id.iv_tabIcon);
tabTitle.setText(tabTitleText);
//assigning tab icons for each tab
if(tabTitleText.equals(tabsTitles[0])){
//profile tab
tabIcon.setImageResource(R.drawable.profile_tab_bar_profile_tab_icon);
}else if(tabTitleText.equals(tabsTitles[1])){
//campaigns tab
tabIcon.setImageResource(R.drawable.profile_tab_bar_campaigns_tab_icon);
}else{
//statistics tab
tabIcon.setImageResource(R.drawable.profile_tab_bar_statistics_tab_icon);
}
return tabLayout;
}