如何在java代码中更改ListView的字体?

时间:2012-06-22 13:49:02

标签: android android-listview

我的活动中有一个标签作为视图。每个标签代表ListView。为了进一步说明问题,ListView s没有任何TextView个膨胀。由于xml架构中没有ListView的文本属性,我想知道是否可以在我的活动中执行此操作。如果没有那么你会建议什么?

布局文件:tabworkentry.xml

<?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:id="@+id/tablayout"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <!-- Include action bar -->
<include layout="@layout/actionbar_layout"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:background="@drawable/innerdashboard_bg"
        android:layout_weight="1">

        <!-- Top 10 starts -->

            <ListView 
            android:id="@+id/Top_10"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="5dp" 
            android:text="this is a tab" />

        <!-- Top 10 ends -->

        <!-- Billable starts -->
        <ListView 
            android:id="@+id/Billable"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:paddingRight="5dp" 
            android:text="this is another tab" />

        <!-- Billable ends -->

        <!-- Product starts -->
        <ListView
            android:id="@+id/Product"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" 
            android:paddingRight="5dp"
            android:textSize="14sp"
            android:text="this is a third tab" />

        <!-- Product ends -->

     </LinearLayout>
</TabHost>

和java代码:

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    try {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabworkentry);

TabHost  mTabHost = getTabHost();

 mTabHost.addTab(mTabHost.newTabSpec("top10").setIndicator("Top  10").setContent(R.id.Top_10));
          mTabHost.addTab(mTabHost.newTabSpec("billable").setIndicator("Billable").setContent(R.id.Billable));
     mTabHost.addTab(mTabHost.newTabSpec("product").setIndicator("Product").setContent(R.id.Product));

  mListView = (ListView)findViewById(R.id.Top_10);
  mListView.setAdapter(new ArrayAdapter<String>(this,
  android.R.layout.simple_list_item_1,Top_10));   

  mListView = (ListView)findViewById(R.id.Billable);
  mListView.setAdapter(new ArrayAdapter<String>(this,
  android.R.layout.simple_list_item_1,Billable));

 mListView = (ListView)findViewById(R.id.Product);
 mListView.setAdapter(new ArrayAdapter<String>(this,
 android.R.layout.simple_list_item_1,Product));


    } catch (Exception e) {
        System.out.println("Exception" + e.getStackTrace());
        Log.d(TAG, "Exception" + e.getStackTrace());
    }
}  

3 个答案:

答案 0 :(得分:4)

您必须创建自己的行布局并添加TextView,然后才能设置文本字体...

使用自定义布局,您可以这样做......

如此膨胀R.layout.row

<强> row.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp" android:typeface="serif"
    android:textSize="15dp" >
</TextView>

答案 1 :(得分:1)

在你的方法中,你做不到,这是不可能的。但是,当您创建自己的类时,例如从BaseAdapter扩展,那么您无法在getView()方法中更改文字,但仍然需要TextView

注意:

  1. 只需创建自己的row.xml,其中包含TextView
  2. 使用BaseAdapter并修改getView()来电中的字体(颜色,尺寸......)。

  3. 您的row.xml可能如下:

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    


    注2:
    在这里你可以设置字体,但只有三种可能的选择(monospace,serif,sans)。

答案 2 :(得分:1)

new ArrayAdapter<String>(this,
  android.R.layout.simple_list_item_1,Billable){

@Override
        public View getView(int position, View convertView, ViewGroup parent) {

               convertView= super.getView();

                TextView text = (TextView) convertView.findViewById(android.R.id.text1);


                return convertView;
        }

}