2010-03-17 26 views
21

Jak zmienić rozmiar czcionki w elemencie ListView? W moim pliku main.xml wypróbowałem kilka różnych wartości dla Androida: textSize (pt, px, sp, dp) i nic nie wydaje się go zmieniać.Zmiana rozmiaru czcionki w ListView - Android/Eclipse

Oto co mam obecnie dla moim 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"/> 

Oto moja 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); 
    } 

} 

Odpowiedz

27

2 drogi:

  1. Kopiowanie simple_list_item_1.xml ze źródeł Android, modyfikować go, a następnie używać go zamiast android.R.layout.simple_list_item_1;
  2. Użyj BaseAdapter i zmień rozmiar czcionki w rozmowie getView(..).

Proponuję, abyście poszli z tym ostatnim.

+0

Jak mogę określić, gdzie zmienić rozmiar w widoku get? – Shouvik

+0

Zgodnie z sugestią Alex, warto zastąpić metodę getView() adaptera. Używam tego podejścia i działa dobrze. – tamsler

+0

Użyłem opcji 1, ponieważ wszystko, czego nie muszę robić zbyt wiele, nad jazdą Metoda getView brzmi jak przesada IMO –

0

Szybka odpowiedź brzmi, że można tylko zmienić rozmiar tekstu używając własnego układu, a nie Android.R.layout.simple_list_item jeden. W ten sposób można zmienić właściwości TextView, takie jak rozmiar tekstu. Jeśli jednak nie pracowałeś z listami z własnymi układami, mogą wydawać się nieco skomplikowane, aby użyć ich po raz pierwszy. Spróbuję wrócić i edytować tę odpowiedź, aby dostarczyć więcej informacji później, ale proponuję poszukać samouczków na temat niestandardowych widoków list - pokaże ci to, jak tworzyć własne pliki layoutu.

0

Utwórz inny plik xml na tekst, który powinien znajdować się na liście wierszy ..

i po prostu dodać android: layout_height = "android:? Attr/listPreferredItemHeight" w TextView: D (umieścić go w krewny układ zamiast układzie liniowym)

a następnie użyć poprzednią ListView xml dla setContentView (R.layout.listview)

a drugi plik XML w kodzie ArrayAdapter

adaptera ArrayAdapter = new ArrayAdapter (Ta, R.layout.yoursecondLayoutforthelistswithText, R.id.titles, HistoryList)

R.id.titles jest id dla TextView

58

Idź do układu utworzyć nowy plik XML o nazwie 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" /> 

teraz w kodzie

go zmienić na

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

+1 do listy niestandardowej.Niezlepsze rozwiązanie – cbrulak

+1

Niezłe rozwiązanie! +1! –

+0

To rozwiązanie nie działa, gdy próbuję zrobić listę radiową z tego samego, wszelkie pomysły na ten temat? –

6

Utwórz inny plik o nazwie 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"> 

-1

można zapisać rozmiar czcionki w sharedprefs a następnie odtworzyć adapter

w swojej metodzie getview adaptera

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