0

タブフラグメントの ttf フォントをカスタマイズするには? 私はシャーロックアクションバーを使用しています。ここに私のコードがあります、

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" />

<FrameLayout
    android:id="@+id/ptr_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</FrameLayout>

そして、主な活動で使用している、

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /** to check whether user logged in or not */
    session = new TwitterHomeActivity(getApplicationContext());
    session.checklogin();

    /** Getting a reference to action bar of this activity */
    mActionBar = getSupportActionBar();

    getSupportActionBar().setDisplayUseLogoEnabled(false);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    mActionBar.setDisplayOptions(0, ActionBar.DISPLAY_USE_LOGO);

    /** Set tab navigation mode */
    mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    /** Getting a reference to ViewPager from the layout */
    mPager = (ViewPager) findViewById(R.id.pager);

    /** Getting a reference to FragmentManager */
    FragmentManager fm = getSupportFragmentManager();

    /** Defining a listener for pageChange */
    ViewPager.SimpleOnPageChangeListener pageChangeListener = new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            super.onPageSelected(position);
            setTitle(getTitleFromPosition(position));
            mActionBar.setSelectedNavigationItem(position);
            // mActionBar.setBackgroundDrawable(R.drawable.ic_action_chance_icon);
        }

        private CharSequence getTitleFromPosition(int position) {
            if (position == 0) {
                title = "text";
            } else if (position == 1) {
                title = "text";
            } else if (position == 2) {
                title = "text";
            } else if (position == 3) {
                title = "text";
            }
            return title;
        }
    };

    /** Setting the pageChange listner to the viewPager */
    mPager.setOnPageChangeListener(pageChangeListener);

    /** Creating an instance of FragmentPagerAdapter */
    MyFragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(
            fm);

    /** Setting the FragmentPagerAdapter object to the viewPager object */
    mPager.setAdapter(fragmentPagerAdapter);

    mActionBar.setDisplayShowTitleEnabled(true);

    /** Defining tab listener */
    ActionBar.TabListener tabListener = new ActionBar.TabListener() {

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {

            mPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {

        }
    };

    /**/

    Tab tab = mActionBar.newTab();
    tab = mActionBar.newTab();

    tab.setText(“text”);

    tab.setTabListener(tabListener);

    mActionBar.addTab(tab);

    tab = mActionBar.newTab();
    tab.setText(“ttext”);
    tab.setTabListener(tabListener);

    mActionBar.addTab(tab);

    tab = mActionBar.newTab();
    tab.setText(“text”);
    tab.setTabListener(tabListener);

    mActionBar.addTab(tab);

    tab = mActionBar.newTab();

    tab.setText(“text”);
    tab.setTabListener(tabListener);

    mActionBar.addTab(tab);

    try {
        ViewConfiguration config = ViewConfiguration.get(this);
        Field menuKeyField = ViewConfiguration.class
                .getDeclaredField("sHasPermanentMenuKey");
        if (menuKeyField != null) {
            menuKeyField.setAccessible(true);
            menuKeyField.setBoolean(config, false);
        }
    } catch (Exception ex) {
        // Ignore
    }

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.camera:
        startActivity(new Intent(MainActivity.this, Request_Broadcast.class));
        overridePendingTransition(R.anim.right_slide_in,
                R.anim.right_slide_out);
        return true;

    case R.id.find_people:
        startActivity(new Intent(MainActivity.this, Find_people.class));
        overridePendingTransition(R.anim.right_slide_in,
                R.anim.right_slide_out);
        return true;
    case R.id.action_settings:
        startActivity(new Intent(MainActivity.this, Pro_settings.class));
        overridePendingTransition(R.anim.right_slide_in,
                R.anim.right_slide_out);
        return true;

    }
    return true;
}

@SuppressLint("NewApi")
public void setActionBarTitle(int feedPage) {
    getActionBar().setTitle(feedPage);
}

@Override
public void onPageScrollStateChanged(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
    // TODO Auto-generated method stub

}

@Override
public void onPageSelected(int arg0) {

}

}

今、書体を使用してタブのフォントをカスタマイズしたいと思います。それを行う方法と、タブのテキストが大文字で表示されています。小文字で表示したいのですが..

4

1 に答える 1

1

ここでは、アプリケーション全体のフォントを効率的に変更する方法を示します。アセットから書体に一度アクセスし、それを参照として使用します

編集


上記のリンクを参照して、クラスのソース コードを使用できます。ここでできることは、親のレイアウトから始まり、それぞれの子のフォントを再帰的に変更することです。テキストを含むことができるビューは、直接的または間接的に TextView クラスのサブクラス (つまり、Button、EditText、CheckBox、CompoundButton、RadioButton、ToggleButton など) であることに注意してください。アプリケーションで異なるフォントを使用する場合は、たとえば、ビューのタグ プロパティを使用して、その特定のビューを持つフォントを定義できます。レイアウトの例は次のようになります。

activity_main.xml

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:tag="title"
    android:text="This is the title screen" />

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:tag="content"
    android:text="This is the activity content." />

<Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:tag="content"
    android:text="This is a button" />

この下には、アクティビティのすべてのビューのフォントを変更できる再帰的な方法があります。このメソッドは、クラスFontUtilsで定義された追加のメソッドです。

public static void setActivityTypeFace(Context context, ViewGroup viewGroup) {

Object tagAux;

for (int i = 0; i < viewGroup.getChildCount(); i++) {

    View viewChild = viewGroup.getChildAt(i);

    if (viewChild instanceof ViewGroup) {
        setActivityTypeFace(context, (ViewGroup) viewChild);

    } else if (viewChild instanceof TextView) {

        tagAux = viewChild.getTag();

        if (tagAux != null) {

            if (((String) tagAux).compareTo("title") == 0) 
            {
                ((TextView) viewChild).setTypeface(getTypeface(context,
                        FontType.TITLE_FONT.toString()));
            }
        } else if (((String) tagAux).compareTo("content") == 0) {
            ((TextView) viewChild).setTypeface(getTypeface(context,
                    FontType.CONTENT_FONT.toString()));
        }
    }
}

}

MainActivity.java

   public class MainActivity extends Activity

        private ViewGroup mRootView;

        ...

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
                mRootView = (ViewGroup) findViewById(R.id.rootView);
                ...
                FontUtil.setActivityTypeFace(this, mRootView);
        }
    }
于 2013-10-31T09:04:51.803 に答える