How can I change the font size in a ListView element? In my main.xml file, I have tried several different values in for android:textSize (pt,px,sp,dp) and nothing seems to change it.
Here is what I have currently for the in my 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"/>
Here is my 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&开发者_如何学Pythongt; adapter;
HistoryList = getResources().getStringArray(R.array.history);
adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,HistoryList);
setListAdapter(adapter);
}
}
Go into layout create a new xml file named mylist.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" />
now in the code
adapter = new ArrayAdapter<String> (this,android.R.layout.simple_list_item_1,HistoryList);
change it to
adapter = new ArrayAdapter<String> (this,R.layout.mylist,HistoryList);
2 ways to go:
- Copy
simple_list_item_1.xml
from Android sources, modify it and then use it instead ofandroid.R.layout.simple_list_item_1
; - Use
BaseAdapter
and modify font size ingetView(..)
call.
I'd suggest you go with latter.
Please create another file named 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">
The quick answer is that you can only change the text size by using your own layout rather than the android.R.layout.simple_list_item one. By doing that you can change the TextView properties such as the text size. However if you haven't worked with lists with your own layouts, they can appear a bit complex to use the first time. I'll try to come back and edit this answer to provide more information later, but I suggest you look for tutorials on custom list views - that will show you how to inflate
your own layout files.
Create another xml file for the Text that should be in the list rows..
and just add android:layout_height="?android:attr/listPreferredItemHeight" in your TextView :D (put it in a relative layout rather than a linear layout)
and then use your previous ListView xml for the setContentView(R.layout.listview)
and the other xml file in your ArrayAdapter code
ArrayAdapter adapter = new ArrayAdapter(this, R.layout.yoursecondLayoutforthelistswithText, R.id.titles, HistoryList)
the R.id.titles is the id for the TextView
you can save font size in sharedprefs and then recreate your adapter
SharedPreferences.Editor ed = mSharedPreferences.edit();
ed.putFloat("fontTwosize", sizeTwo);
ed.commit();
adapterz = new LazyziyaratAdapter(MainActivity.this,
ziyaratList);
listz.setAdapter(adapterz);
and in your getview method of adapter
holder.text.setTextSize(TypedValue.COMPLEX_UNIT_SP,G.mSharedPreferences.getFloat("fontTwosize", 25));
精彩评论