Android ListView TextSize

时间:2010-05-18 11:13:39

标签: android listview

我的listview.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res/zaid.quotes.dlama">
    <ListView android:id="@+id/ListView01" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_alignParentTop="true"
        android:layout_marginBottom="50dp" android:paddingTop="50dp"></ListView>
    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/Back"
        android:layout_alignParentBottom="true" android:text="Go Back"></Button>

    <LinearLayout android:layout_width="wrap_content"
        android:id="@+id/LinearLayout01" android:layout_height="wrap_content"
        android:layout_alignParentTop="true">
        <com.admob.android.ads.AdView android:id="@+id/ad"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            myapp:backgroundColor="#000000" myapp:primaryTextColor="#FFFFFF"
            myapp:secondaryTextColor="#CCCCCC" android:layout_alignParentTop="true" />
    </LinearLayout>


</RelativeLayout>

列表视图中文本的当前大小很大。我似乎无法弄清楚如何更改文字大小。

4 个答案:

答案 0 :(得分:3)

这里真正重要的是您在View的{​​{1}}或BaseAdapter getView(..)中返回的行CursorAdapter

您可以从Android来源复制newView(..)simple_list_item_1.xml,并根据您的需要进行自定义 说,改变
simple_list_item_2.xml

android:textAppearance="?android:attr/textAppearanceLarge"

另一个选项是通过调用android:textAppearance="?android:attr/textAppearanceMedium"上的Adapter来改变setTextAppearance(context, android.R.attr.textAppearanceMedium)中的文字外观。

答案 1 :(得分:2)

我不确定我是否得到你想要的东西,但是listView没有文字大小,里面的元素是定义文字大小的元素。

也就是说,如果您将textview添加到列表中,请在textView中定义文本大小。

答案 2 :(得分:1)

如果您重命名本地simple_list_item_1.xml

,Yanchenko的答案将非常完美

MyActivity.java

ArrayAdapter<String> filesAdapter = new ArrayAdapter<String>(this, 
    R.layout.simplest_list_item_1, topFilesArray);
filesList.setDivider(null);

simplest_list_item_1.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="7pt"
    android:paddingLeft="6dip" />

layout_height="wrap_content"仅用于10个列表项目。

答案 3 :(得分:0)

我认为你使用ListView有错误的方法。使用适配器将列表提供给视图,并且在ListView布局文件中,您不定义行,您只定义列表视图本身和默认文本视图,该视图将在列表中没有项目时显示。然后定义一个单独的xml文件,该文件将呈现每一行。然后在此行布局中,您可以随意设置文本大小。

这是listview xml的一个示例(请注意listview和textview的特殊ID,这些是必需的):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:scrollbars="horizontal" android:orientation="vertical"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:paddingLeft="8dp" android:paddingRight="8dp">

    <ListView android:id="@+id/android:list" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:layout_weight="1"
        android:drawSelectorOnTop="false" />

    <TextView android:id="@+id/android:empty"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:text="No records found" />
</LinearLayout>

然后您的行布局将是没有listview的文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/RelativeLayout01"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" xmlns:myapp="http://schemas.android.com/apk/res/zaid.quotes.dlama">
    <Button android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:id="@+id/Back"
        android:layout_alignParentBottom="true" android:text="Go Back"></Button>

    <LinearLayout android:layout_width="wrap_content"
        android:id="@+id/LinearLayout01" android:layout_height="wrap_content"
        android:layout_alignParentTop="true">
        <com.admob.android.ads.AdView android:id="@+id/ad"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            myapp:backgroundColor="#000000" myapp:primaryTextColor="#FFFFFF"
            myapp:secondaryTextColor="#CCCCCC" android:layout_alignParentTop="true" />
    </LinearLayout>
</RelativeLayout>

以下是适配器的getView()方法示例,您可以在其中设置行布局文件:

public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.row_layout, null);
        }
            //Now, assuming your adapter has the list of objects to be displayed in 'records':
            if(records != null) {
                    YourRecord r = records.get(position);
                    if(r != null) {
                            // Populate your views in your row.xml based on data from your record selected (r)
                    }
                    ...
             }

}