0

我想隐藏屏幕点击上的标签并让它们重新出现在另一个屏幕点击上。我已经在很多应用程序中看到了这一点,所以这应该是可能的。我可以使用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));

// 代码中的其他位置... mTab​​Host.setOnClickListener( tabClickListener ); } }

由于某种原因,此代码不起作用。有人可以帮忙吗。

4

2 回答 2

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

于 2012-06-07T19:56:34.170 回答
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 );
        }
    }
};
于 2012-06-07T02:46:11.447 回答