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

Posted

技术标签:

【中文标题】更改 ListView 中的字体大小 - Android/Eclipse【英文标题】:Change font size in ListView - Android/Eclipse 【发布时间】:2011-01-28 16:11:33 【问题描述】:

如何更改 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_
    android:layout_ 
    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);
    


【问题讨论】:

【参考方案1】:

进入布局创建一个名为 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_ 
    android:layout_ /> 

现在在代码中

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

改成

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

【讨论】:

当我尝试用相同的收音机列表制作收音机列表时,此解决方案不起作用,对此有何想法? @GarimaTiwari 似乎是什么问题?当您尝试这样做时,您会得到什么意外行为?【参考方案2】:

两种方法:

    从 Android 源复制 simple_list_item_1.xml,修改它,然后使用它代替 android.R.layout.simple_list_item_1; 使用BaseAdapter 并在getView(..) 调用中修改字体大小。

我建议你选择后者。

【讨论】:

如何定义在获取视图中更改大小的位置? 正如 Alex 所建议的,重写 Adapter 的 getView() 方法是有意义的。我使用这种方法,效果很好。 我使用了选项 1,因为我不需要做太多事情,骑在 getView 方法上听起来像是一个矫枉过正的 IMO 这充其量是一个不完整的答案。没有提到调用方法(setTextSize);适配器中的 View 对象是 ListView 对象,而不是与其关联的 TextView;因此 'setTextSize' 不是反对该观点的方法;如果您弄清楚这一点并针对您必须获取关联的 TextView 的视图调用“findViewById”,当您尝试使用“android.R.layout.simple_list_item_1”作为 id 时,它会显示错误;等等等等。不知道为什么这个答案被选中或投票赞成,因为它需要十几个后续问题才能真正发挥作用。【参考方案3】:

请创建另一个名为 list_item.xml 的文件

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_ 
    android:padding="6dp"
    android:textSize="21sp">

【讨论】:

【参考方案4】:

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

【讨论】:

【参考方案5】:

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

只需在 TextView 中添加 android:layout_ :D(将其置于相对布局而不是线性布局中)

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

以及 ArrayAdapter 代码中的其他 xml 文件

ArrayAdapter 适配器 = 新的 ArrayAdapter(this, R.layout.yoursecondLayoutforthelistswithText, R.id.titles, HistoryList)

R.id.titles 是 TextView 的 id

【讨论】:

【参考方案6】:

您可以在 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));

【讨论】:

以上是关于更改 ListView 中的字体大小 - Android/Eclipse的主要内容,如果未能解决你的问题,请参考以下文章

动态更改 ListView 中的 TextView 字体颜色

android listview中的文字大小能在string.xml里设置吗

如何根据 Xcode 中的系统字体大小更改标签的字体大小?

更改字体大小后更改崇高文本默认主题中的行高

如何更改 JWPlayer 中的字幕/标题字体大小?

如何更改 direct.label 中的字体大小?