0

Androidですべてのフォントを変更する方法を学んでいますが、うまくいかないようです。すべてではなく、テキストビューを1つだけ変更しました..

これは私のコード

 public class AndroidTypefaceUtility 
{
    AndroidTypefaceUtility()
    {
    }
    public static void setFont(Context context, ViewGroup group) {
        Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/OpenSans-Light.ttf");
        int count = group.getChildCount();
        View v;
        for(int i = 0; i < count; i++) {
            v = group.getChildAt(i);
            if(v instanceof TextView || v instanceof Button || v instanceof EditText/*etc.*/)
                ((TextView)v).setTypeface(tf);
            else if(v instanceof ViewGroup)
                setFont(context, (ViewGroup)v);
        }
    }

    }

この実装コードはすべてのフォントを変更します

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

            setContentView(R.layout.layout_tab);
            ViewGroup root = (ViewGroup)findViewById(R.id.myrootlayout);        
            AndroidTypefaceUtility.setFont(getApplicationContext(),root);
}

アップデート

そしてこれは私のxmlです

<?xml version="1.0" encoding="utf-8"?>
<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"
    android:background="#ffffff"
    android:id="@+id/myrootlayout"
    >

    <ListView 
        android:id="@+id/menu_content_menulist"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="8dp"
        android:background="#d0000000"
        android:cacheColorHint="@android:color/transparent" 
        android:divider="@null"
        android:scrollbars="none"
        android:listSelector="@null"/>      
    <RelativeLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <com.smart.tangsel.side_menu_scroll.ScrollerLinearLayout        
            android:id="@+id/menu_content_side_slide_layout"
            android:layout_width="match_parent"
            android:layout_height="match_parent"        
            android:orientation="vertical">
<TabHost
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center_vertical"
    android:gravity="center"
    >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/content_tab"        
        android:orientation="vertical"
        android:background="@drawable/bg_app"
         >

        <include layout="@layout/layout_action_bar" />

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:background="@null"
            android:orientation="vertical" >          

            <FrameLayout
                android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
                android:background="@null" 
                 android:layout_above="@android:id/tabs"/>
              <TabWidget
                android:id="@android:id/tabs"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:tabStripLeft="@drawable/tabstrip"
                android:tabStripRight="@drawable/tabstrip"
                android:soundEffectsEnabled="false"
                android:layout_alignParentBottom="true"
                 />
        </RelativeLayout>

       <!-- <include layout="@layout/footer_layout" /> --> 
    </LinearLayout>

</TabHost>
</com.smart.tangsel.side_menu_scroll.ScrollerLinearLayout>

</RelativeLayout></RelativeLayout>

誰か助けて?私のコードが間違っていますか?ありがとう..私の英語でごめんなさい

4

1 に答える 1

0

これを試して:

public static ViewGroup setFont(Context context, ViewGroup group, Typeface font) 
    {
        int count = group.getChildCount();
        View v = null;
        for(int i = 0; i < count; i++) 
        {
            v = group.getChildAt(i);
            if(v instanceof TextView || v instanceof Button || v instanceof EditText/*etc.*/)
                ((TextView)group.getChildAt(i)).setTypeface(font);
            else if(v instanceof ViewGroup)
                setFont(context, (ViewGroup)v, font);
        }

        return group;
    }

次に、メインの編集で、次のような呼び出しを編集します。

protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //--Get font style to be applied from assets folder--
        Typeface font =Typeface.createFromAsset(getAssets(), "Sansation_Bold_Italic.ttf");

         ViewGroup root = (ViewGroup)findViewById(R.id.myrootlayout);        
         root = (ViewGroup) AndroidTFFActivity.setFont(this,root, font);
    }

また、マニフェストにファイルを読み取るための適切なアクセス許可が設定されていることを確認してください。私はあなたのサンプルを取得し、私の側で正常に実行しました。これが役立つかどうか教えてください.

これは、テストに使用した xml の例です。

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    android:id="@+id/myrootlayout">


         <TextView
            android:id="@+id/txtTest1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test  1" />

         <TextView
            android:id="@+id/txtTest2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test  2" />

         <TextView
            android:id="@+id/txtTest3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="test 3" />


</LinearLayout>
于 2013-10-29T19:53:31.677 に答える