在android选项卡小部件中设置文本字体不起作用?

时间:2011-08-27 23:16:09

标签: android android-layout android-widget

我正在尝试更改选项卡布局的其中一个活动中的文本字体。我正在使用自定义字体。但是字体不起作用。对于我的一个类,当我切换到该选项卡时,我从eclipse调试器得到一个错误,但我的代码似乎没有任何问题。这是失败的代码

public class YearThreeActivity extends Activity{

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.yearthree);

    /*without the next three lines the tab view works fine */

    TextView tv=(TextView)findViewById(R.id.yearthree_view);//<-- debugger says this assignment is null but which shouldn't be the case as the R class has that in the id subclass.
    Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/Century_Gothic.ttf"); 
    tv.setTypeface(font);
}

}

然而,此活动几乎完全相同,当我切换到此选项卡时,它可以正常工作

public class StatsActivity extends Activity{

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.stats);

    TextView tv=(TextView)findViewById(R.id.stats_view);  
    Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/Century_Gothic.ttf"); 
    tv.setTypeface(font);

     }
}

我已经在这里待了好几个小时。 xml清单文件,布局文件,所有内容都与它们相同但是第一个不起作用...我在这里作为最后的手段......:&lt;

2 个答案:

答案 0 :(得分:1)

当我使用标签时,我通常只是通过将android可见性设置为已消失来隐藏tabwidget标记。

添加按钮作为标签按钮,如

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" 
        android:layout_height="fill_parent">       
        <FrameLayout android:id="@android:id/tabcontent" 
            android:layout_width="fill_parent" android:layout_height="0dip"
            android:layout_weight="1.0"/>
        <FrameLayout android:layout_width="fill_parent" 
            android:layout_height="wrap_content">
            <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:visibility="gone"/>
            <LinearLayout android:layout_width="fill_parent" 
                android:layout_height="64dip">
                <Button android:layout_height="fill_parent" android:layout_width="0dip" 
                    android:layout_weight="1.0"
                    android:background="@drawable/ic_tab_artists" 
                    android:id="@+id/artist_id" android:onClick="tabHandler"/>
                <Button android:layout_height="fill_parent" android:layout_width="0dip" 
                    android:layout_weight="1.0"
                    android:background="@drawable/ic_tab_artists" 
                    android:id="@+id/album_id" android:onClick="tabHandler"/>
                <Button android:layout_height="fill_parent" android:layout_width="0dip"     
                    android:layout_weight="1.0"
                    android:background="@drawable/ic_tab_artists" 
                    android:id="@+id/song_id" android:onClick="tabHandler"/>
            </LinearLayout> 
        </FrameLayout>
    </LinearLayout>
</TabHost>

我添加了一个按钮点击处理程序

public void tabHandler(View target){
    artistButton.setSelected(false);
    albumButton.setSelected(false);
    songButton.setSelected(false);
    if(target.getId() == R.id.artist_id){
        tabHost.setCurrentTab(0);
        artistButton.setSelected(true);
    } else if(target.getId() == R.id.album_id){
        tabHost.setCurrentTab(1);
        albumButton.setSelected(true);
    } else if(target.getId() == R.id.song_id){
        tabHost.setCurrentTab(2);
        songButton.setSelected(true);
    }
}

当我使用这种方法时,它让我可以更自由地设置标签按钮的样式。

答案 1 :(得分:1)

我修好了。它与我在应用程序ID中提供textViews的方式有关。他们重合了