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));

//コード内のどこか...mTabHost.setOnClickListener(tabClickListener); }}

何らかの理由で、このコードは機能していません。誰か助けてくれませんか。

4

2 に答える 2

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 に答える
0

Actionbar Sherlock (投稿した前の質問から) を使用する場合は、TabHost、TabManager を使用したくありません。フラグメントを使用して 3.0+ でタブを実行する方法でタブを実行する必要があります。

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

于 2012-06-07T19:56:34.170 に答える