2013-04-17 5 views
2

Я пытаюсь изменить размер шрифта моего gridview в приложении для Android.пытается изменить размер шрифта в gridview в android

это мой код в GridView она позволяет:

GridView gridview = (GridView)findViewById(R.id.gridView); 
     ArrayAdapter<String> arrayadapter = new ArrayAdapter<String>(
       this, 
       R.layout.customstyle, 
       Rows); 

     gridview.setNumColumns(14); 
     gridview.setAdapter(arrayadapter); 

и вот код из моего пользовательского стиля XML-документа

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/grid_item_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="8dip" > 
    </TextView> 
</LinearLayout> 

В настоящее время программа падает, когда я пытаюсь и получить его примените мой stlye, но он работает, когда он использует стандартные стили. так может кто-нибудь помочь мне исправить этот стиль, поэтому я могу установить размер шрифта Благодарности

+0

сообщения LogCat след .. И вы должны использовать 'sp' вместо' dp', где вы работаете с 'TextView' – Pragnani

+0

он говорит: Вы должны указать идентификатор ресурса для TextView –

+0

Опубликовано ответа, проверьте еще – Pragnani

ответ

1

ArrayAdapter должен иметь идентификатор ресурса типа TextView.

Удалить родительский LinearLayout и макет должен быть как

использования как этот

customStyle.xml

<?xml version="1.0" encoding="utf-8"?> 
    <TextView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/grid_item_label" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textSize="8sp" > 
    </TextView> 

заменить пользовательский макет с вышесказанным, который будет исправить вашу проблему.

+0

Спасибо, что исправил его :) –

1

Вы можете создать свой собственный пользовательский адаптер, как это:

public class MyAdapter extends BaseAdapter{ 

private Context mContext; 
private String[] text = {}; 
private Integer[] mThumbIds = {}; 
public MyAdapter(Context c,String[] text) 
{ 
    mContext = c; 
    this.text = text; 
} 

public int getCount() 
{ 
    return mThumbIds.length; 
} 

public Object getItem(int position) 
{ 
    return position; 
} 

public long getItemId(int position) 
{ 
    return position; 
} 

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    View myView = convertView; 
    if (convertView == null) 
    { 
     LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     myView =li.inflate(R.layout.grid_item, null); 
     TextView tv = (TextView)myView.findViewById(R.id.grid_itemTxt); 
     tv.setText(text[position]); 
    } 
    return myView; 
} 

GridItem Layout

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id = "@+id/gridItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation= "vertical" 
    android:gravity="center_horizontal" > 

    <TextView 
     android:id="@+id/grid_itemTxt" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:textColor="#6075B2"> 
    </TextView> 
</LinearLayout> 

а затем по вашему методу onCreate():

private GridView grid; 
private String text[] = {"hello","world","here","is","a","grid","view"}; 
grid = (GridView)findViewById(R.id.yourGridLayoutXml); 
grid.setAdapter(new MyAdapter(this, text)); 

Примечание: MyAdapter это класс Java, который расширяет BaseAdataper

+0

Если вы хочу установить Images + textView на сетке. дайте мне знать и я отредактирую свой ответ – Elior

Смежные вопросы