如何隐藏选项卡并使其在Android版本中重新出现< 3?

时间:2012-06-06 21:20:46

标签: java android android-view

我想隐藏屏幕上的标签,然后让它们重新出现在另一个屏幕上。我已经在很多应用程序中看到了这一点,所以这应该是可能的。我可以使用setvisibility = VIEW.GONE成功隐藏它们。我试过这个:

private OnClickListener tabClickListener = new OnClickListener() {
    public void onClick(View v) {
        if(v.getVisibility() == View.VISIBLE) {
            v.setVisibility( View.GONE );
        }
        else if(v.getVisibility() == View.GONE){
            v.setVisibility( View.VISIBLE );
        }
    }
};

这是xml代码:

enter code here     

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp">

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:padding="5dp"
        android:layout_weight="1">
        <TextView 
            android:id="@+id/textview1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:text="this is a tab" />
        <TextView 
            android:id="@+id/textview2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:text="this is another tab" />
        <TextView 
            android:id="@+id/textview3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:text="this is a third tab" />
        <TextView 
            android:id="@+id/textview4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:text="this is a fourth tab" />
    </FrameLayout>
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="0"
        android:layout_marginBottom="-5dp"/>

    </LinearLayout>

</TabHost>

这是java代码:

public class TabWorkEntryActivity extends TabActivity {


//hide tabs
private OnClickListener tabClickListener = new OnClickListener() {
    public void onClick(View v) {
        if (v.getVisibility() == View.VISIBLE) {
            v.setVisibility( View.INVISIBLE );
        } else {
            v.setVisibility( View.VISIBLE );
        }
    }
};


@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  setContentView(R.layout.tabworkentry);

TabHost  mTabHost = getTabHost();
//get width of the display
  Display display = getWindowManager().getDefaultDisplay();
  int width = display.getWidth();

   mTabHost.addTab(mTabHost.newTabSpec("top10").setIndicator("Top        10").setContent(R.id.textview1));
                 mTabHost.addTab(mTabHost.newTabSpec("billable").setIndicator("Billable").setContent(R.id.textview2));
   mTabHost.addTab(mTabHost.newTabSpec("product").setIndicator("Product").setContent(R.id.textview3));
  mTabHost.addTab(mTabHost.newTabSpec("regular").setIndicator("Regular").setContent(R.id.textview4));

  mTabHost.setCurrentTab(3);

  mTabHost.getTabWidget().getChildAt(0).setLayoutParams(new
          LinearLayout.LayoutParams(((width/9)*2),50));
  mTabHost.getTabWidget().getChildAt(1).setLayoutParams(new
          LinearLayout.LayoutParams(((width/9)*2),50));
  mTabHost.getTabWidget().getChildAt(2).setLayoutParams(new
          LinearLayout.LayoutParams(((width/9)*2),50));
  mTabHost.getTabWidget().getChildAt(3).setLayoutParams(new
          LinearLayout.LayoutParams(((width/9)*2),50));

//代码中的其他地方......         mTabHost.setOnClickListener(tabClickListener);     }     }

由于某种原因,此代码无效。有人可以帮忙。

2 个答案:

答案 0 :(得分:0)

您需要在活动的OnClickListener方法中设置onCreate

v.setOnClickListener(tabClickListener);

您也可以尝试使用View.INVISIBLE代替View.GONE来隐藏视图。


编辑:

这是我将使用的代码:

private OnClickListener tabClickListener = new OnClickListener() {
    public void onClick(View v) {
        if (v.getVisibility() == View.VISIBLE) {
            v.setVisibility( View.INVISIBLE );
        } else {
            v.setVisibility( View.VISIBLE );
        }
    }
};

答案 1 :(得分:0)

如果您打算使用Actionbar Sherlock(来自您发布的上一个问题),那么您不想使用TabHost,TabManager。你想要按照3.0+使用Fragments的方式做Tabs。

https://github.com/JakeWharton/ActionBarSherlock/blob/master/samples/fragments/src/com/actionbarsherlock/sample/fragments/FragmentTabsPager.java