更改 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 字体颜色