2012-02-10 95 views
0

我有这样的代码:如何将自定义字体设置为ListView项目中的一个TextView?

SpecialAdapter adapter = new SpecialAdapter(
           this, 
           list, 
           R.layout.list_display_item, 
           from, 
           to); 

     myTextListView.setAdapter(adapter); 

. 
. 
. 
. 

public class SpecialAdapter extends SimpleAdapter 
{ 
     public SpecialAdapter(Context context, List<HashMap<String, 
String>> items, int resource, String[] from, int[] to) { 
      super(context, items, resource, from, to); 
     } 

     @Override 

     public View getView(
int position, View convertView, ViewGroup parent) 
{ 
      View view = super.getView(position, convertView, parent); 
       } 
    } 

list_display_item.xml

<?xml version="1.0" encoding="utf-8"?> 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/myDisplayItemLinearLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical"> 

     <TextView 
      android:id="@+id/arabicTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="right|center_vertical" 
      android:lineSpacingMultiplier="3" 
      android:text="Arabic" 
      android:textSize="30dp"/> 

     <TextView 
      android:id="@+id/translationTextView" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="English" 
      android:gravity="left|center_vertical" 
      android:textSize="30dp"/> 

    </LinearLayout> 

我只想我自己的阿拉伯字体设置为机器人:ID = “@ + ID/arabicTextView” 英文字体到android:id =“@ + id/translationTextView”。我们可以通过使用getView()方法来获取视图的位置信息,而不是使用视图的方式来显示视图的位置。

我只想得到这个的LinearLayout内textviews设置单独的字体,每个字体用在这里...我怎样才能得到这些textViews那里?

是不是正确的方式在这里设置我的字体还是应该在一些其它的方式来完成????请帮助我..

+1

setTypeface方法看你从here..http任何信息://stackoverflow.com/questions/2376250/custom -fonts-和XML的布局,Android的 – 2012-02-10 14:39:19

+0

你应该使用BaseAdapter ..在你的自定义布局的文本视图 – 2012-02-10 14:39:27

+0

尝试textAppearance。 – Noby 2012-02-10 14:48:58

回答

3

使用的ViewfindViewById方法和TextView

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    View view = super.getView(position, convertView, parent); 

    //assuming you've put your arabic font file in your assets directory 
    ((TextView)view.findViewById(R.id.arabicTextView)).setTypeface(Typeface.createFromAsset(view.getContext().getAssets(), "yourarabicfont.otf")); 

    //assuming you've put some custom english font in your assets directory 
    ((TextView)view.findViewById(R.id.translationTextView)).setTypeface(Typeface.createFromAsset(view.getContext().getAssets(), "yourenglishfont.otf")); 

    return view; 
} 
+0

那么,如何在使用碎片时工作? getContext返回null – KickingLettuce 2012-10-19 17:48:44

+0

使用getActivity()如果​​在一个Fragment中,所以你得到了Activity的上下文。或者,如果您需要访问资源,则可以执行getActivity.getApplicationContext()。 – 2013-08-16 19:40:48

+0

要小心片段内的getActivity(),如果片段当前未连接,它可能会返回null。我更喜欢使用view.getContext(),假设我有一个视图对象。 – 2013-08-16 19:59:44

相关问题