2013-08-05 2 views
0

У меня есть класс, который распространяется на ListActivity, для которого я хочу установить собственный шрифт. Может ли кто-нибудь пройти меня через это? Я знаю, как использовать шрифт TextView, но не для ListActivity.Пользовательский шрифт для ListView в Android?

public static class PunjabiBooks extends ListActivity{ 

    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     String[] mathList = new String[] {"Gurmukh Soch", "Books (Punjabi)", "Books (Hindi)", "Books (English)", 
     "Annual Report"}; 
     setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mathList)); 

    } 

    @Override 
    protected void onListItemClick(ListView l, View v, int position, long id) { 
     // TODO Auto-generated method stub 
     super.onListItemClick(l, v, position, id); 
     Object o = this.getListAdapter().getItem(position); 
     String keyword = o.toString(); 
     if (keyword.equals("Gurmukh Soch")){ 
      x = 0; 
      try{ 
       Class ourClass = Class.forName("sukrit.trust.PublicationsTab$WebActivity"); 
       Intent ourIntent = new Intent(PunjabiBooks.this, ourClass); 
       startActivity(ourIntent); 
      }catch(ClassNotFoundException e){ 
       e.printStackTrace(); 
      } 
     }else if(keyword.equals("Books (Punjabi)")){ 
      try{ 
       Class ourClass = Class.forName("sukrit.trust.Publications$PunjabiBooks"); 
       // Intent ourIntent = new Intent(Publications.this, ourClass); 
       //startActivity(ourIntent); 
      }catch(ClassNotFoundException e){ 
       e.printStackTrace(); 
      } 
     }else if(keyword.equals("Books (Hindi)")){ 
      try{ 
       Class ourClass = Class.forName("sukrit.trust.PublicationsTab$HindiBooks"); 
       //     Intent ourIntent = new Intent(Publications.this, ourClass); 
       //     startActivity(ourIntent); 
      }catch(ClassNotFoundException e){ 
       e.printStackTrace(); 
      } 
     }else if(keyword.equals("Books (English)")){ 
      try{ 
       Class ourClass = Class.forName("sukrit.trust.PublicationsTab$EnglishBooks"); 
       //     Intent ourIntent = new Intent(Publications.this, ourClass); 
       //     startActivity(ourIntent); 
      }catch(ClassNotFoundException e){ 
       e.printStackTrace(); 
      } 
     }else if(keyword.equals("Annual Report")){ 
      try{ 
       Class ourClass = Class.forName("sukrit.trust.PublicationsTab$AnnualReport"); 
       //     Intent ourIntent = new Intent(Publications.this, ourClass); 
       //     startActivity(ourIntent); 
      }catch(ClassNotFoundException e){ 
       e.printStackTrace(); 
      } 
     } 
    } 

ответ

2

ListView по своей природе не имеет какой-либо текст, чтобы иметь специальный шрифт для. Вам нужно иметь дело с классом, который предоставляет этот текст: Adapter. Ваш адаптер отвечает за создание представлений в ListView, включая (в данном случае) TextView. Вам нужно будет создать пользовательский адаптер (возможно, исходящий из ArrayAdapter<String>), где вы переопределяете метод getView. Простейшим решением, вероятно, было бы просто вызвать родительскую реализацию getView, а затем найти соответствующий TextView с макета android.R.layout.simple_list_item_1 с использованием View.findViewById (вы можете посмотреть его, но я считаю, что соответствующий идентификатор text1), а затем выполняет настройку пользовательского шрифта что вы уже знаете, как это сделать. Это, вероятно, выглядит примерно так:

public class CustomAdapter extends ArrayAdapter<String> { 
    // Appropriate Constructor here 
    // ... 

    public View getView (int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 
     TextView textView = (TextView) view.findViewById(android.R.id.text1); 
     // Do your textView.setTypeface(...) stuff here 
    } 
} 
Смежные вопросы