在ListView中更改字体大小 - Android / Eclipse

时间:2010-03-17 16:34:03

标签: java android eclipse listview

如何更改ListView元素中的字体大小?在我的main.xml文件中,我在android中尝试了几个不同的值:textSize(pt,px,sp,dp),似乎没有任何改变它。

以下是我目前在main.xml中的内容:

<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/list"
    android:textColor="#ffffff"
    android:background="#000080" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:clickable="true" 
    android:dividerHeight="1px"
    android:layout_marginTop="5px" 
    android:textSize="8px"/>

这是我的Java:

package com.SorenWinslow.TriumphHistory;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class TriumphHistory extends ListActivity {
    String[] HistoryList;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        ArrayAdapter<String> adapter;
        HistoryList = getResources().getStringArray(R.array.history);
        adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,HistoryList);
        setListAdapter(adapter);
    }

}

6 个答案:

答案 0 :(得分:57)

进入布局创建一个名为mylist.xml的新xml文件

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@android:id/text1"  
        android:paddingTop="2dip" 
        android:paddingBottom="3dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

现在在代码中

        adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,HistoryList);

将其更改为

        adapter = new ArrayAdapter<String> (this,R.layout.mylist,HistoryList);

答案 1 :(得分:27)

有两种方法:

  1. 从Android来源复制simple_list_item_1.xml,修改后再使用它代替android.R.layout.simple_list_item_1;
  2. 使用BaseAdapter并修改getView(..)来电中的字体大小。
  3. 我建议你选择后者。

答案 2 :(得分:6)

请创建另一个名为list_item.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="6dp"
    android:textSize="21sp">

答案 3 :(得分:0)

快速回答是,您只能使用自己的布局而不是android.R.layout.simple_list_item来更改文本大小。通过这样做,您可以更改TextView属性,如文本大小。但是,如果您没有使用具有自己布局的列表,则第一次使用它们会显得有些复杂。我将尝试回来编辑此答案,以便稍后提供更多信息,但我建议您查看自定义列表视图的教程 - 这将向您展示如何inflate您自己的布局文件。

答案 4 :(得分:0)

为应该在列表行中的Text创建另一个xml文件..

只需在TextView中添加android:layout_height =“?android:attr / listPreferredItemHeight”:D(将其置于相对布局而不是线性布局)

然后将以前的ListView xml用于setContentView(R.layout.listview)

和ArrayAdapter代码中的另一个xml文件

ArrayAdapter adapter = new ArrayAdapter(this,                 R.layout.yoursecondLayoutforthelistswithText,R.id.titles,HistoryList)

R.id.titles是TextView的ID

答案 5 :(得分:-1)

您可以在sharedprefs中保存字体大小,然后重新创建适配器

    SharedPreferences.Editor ed = mSharedPreferences.edit();
    ed.putFloat("fontTwosize", sizeTwo);
    ed.commit();

    adapterz = new LazyziyaratAdapter(MainActivity.this,
                    ziyaratList);

    listz.setAdapter(adapterz);

和你的适配器的getview方法

 holder.text.setTextSize(TypedValue.COMPLEX_UNIT_SP,G.mSharedPreferences.getFloat("fontTwosize", 25));