3

NAVIGATION_MODE_TABS を備えた ActionBar と、アプリケーションに実際のタブがいくつかあります。タスクは非常に簡単です: 選択したタブのタイトルを太字にします (そして、タブが選択を失うと通常に戻ります)。しかし、そのようなタスクを達成することは大きな頭痛の種になりました。Tab オブジェクトには、基になる TextView にアクセスするためのメソッドがありません。そのため、タブ タイトルにカスタム ビューを使用しましたが、このビューの位置が間違っています。

タイトルが上にくっつく

助けて教えてください:

  • タブテキストを直接操作する方法がある場合、または
  • カスタムTextViewのデフォルトの配置を達成するにはどうすればよいですか?

私が使用しているコード:

活動中 ->

    final ActionBar actionBar = getSupportActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            mViewPager.setCurrentItem(tab.getPosition());
            TextView textView = (TextView) tab.getCustomView();
            textView.setTypeface(null, Typeface.BOLD);
        }
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
            TextView textView = (TextView) tab.getCustomView();
            textView.setTypeface(null, Typeface.NORMAL);
        }
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
            // probably ignore this event
        }
    };

    for (int i = 0; i < 3; i++) {
        TextView textView = (TextView)
                getLayoutInflater().inflate(R.layout.tab_title, null);
        textView.setText("Tab " + i);
        actionBar.addTab(actionBar.newTab()
                .setCustomView(textView)
                .setTabListener(tabListener));
    }

layout.tab_title で ->

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
4

1 に答える 1

0

ActionBar.Tab には があるため、 /コールバックsetText(CharSequence)で次のようなことができます。onTabSelectedonTabUnselected

Spannable wordtoSpan = new SpannableString(String.valueOf(tab.getText()));        
wordtoSpan.setSpan(new StyleSpan(TypeFace.BOLD), 0, wordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
tab.setText(wordtoSpan);

ただし、別の Spannable,SPAN_X_X 定数を使用する必要がある場合があります

編集:コールバックで使用するために、より一般的なものにしました(タブに既に存在するテキストを取ります)。

于 2013-11-06T03:06:36.100 に答える