有人知道如何从膨胀的布局中隐藏组件吗?我有以下代码:
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);
当我试图通过使用隐藏它时:
profile_tab_selected_indicator.setVisibility(View.GONE);
它不起作用。看起来我遗漏了一些东西,或者无法从膨胀的布局中隐藏 xml 组件。我也尝试通过设置宽度和高度,0dp
但LayoutParams
效果不佳。
在这样的自定义函数之外onCreate()
:
public static View tabLayout;
protected void onCreate(){
//some code here
buildTabLayout();
}
public void buildTabLayout(){
tabLayout = LayoutInflater.from(this).inflate(R.layout.tab_layout, null);
}
然后我试图在这里隐藏它:
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);
}
这是膨胀布局的xml代码
<?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>
编辑:
负责我的选项卡布局的所有代码:
// 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;
}