2016-07-19 28 views
1

我正在使用RecyclerView显示三个不同的文本,我想为每个应用自定义Typeface。现在在我的适配器ViewHolder我已经把Typeface代码,但不知道如何将它们应用到每个textViewRecyclerView自定义字体内部适配器

Adapter.java

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { 

List<AdapterData> mItems; 

public Adapter() { 
    super(); 
    mItems = new ArrayList<>(); 
    AdapterData data = new AdapterData(); 
    data.setTextOne("Title 1"); 
    data.setTextTwo("Title 2"); 
    data.setTextThree("Title 3"); 
    mItems.add(data); 

    data = new AdapterData(); 
    data.setTextOne("Title 1"); 
    data.setTextTwo("Title 2"); 
    data.setTextThree("Title 3"); 

    data = new AdapterData(); 
    data.setTextOne("Title 1"); 
    data.setTextTwo("Title 2"); 
    data.setTextThree("Title 3"); 
    mItems.add(data); 


} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.cardview_items, viewGroup, false); 
    return new ViewHolder(v); 
} 

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    AdapterData data = mItems.get(i); 
    viewHolder.textOne.setText(data.getTextOne()); 
    viewHolder.textTwo.setText(data.getTextTwo()); 
    viewHolder.textThree.setText(data.getTextThree()); 

} 


@Override 
public int getItemCount() { 

    return mItems.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView textOne; 
    public TextView textTwo; 
    public TextView textThree; 

    Typeface customTypeOne = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface One.ttf"); 
    Typeface customTypeTwo = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface Two.ttf"); 
    Typeface customTypeThree = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface Three.ttf"); 


    public ViewHolder(View itemView) { 
     super(itemView); 
     textOne = (TextView)itemView.findViewById(R.id.textView1); 
     textTwo = (TextView)itemView.findViewById(R.id.textView2); 
     textThree = (TextView)itemView.findViewById(R.id.textView3); 


    } 
} 
} 
+0

的可能重复[使用Android中的自定义字体(http://stackoverflow.com/questions/2973270/使用-A-自定义字体功能于机器人) –

回答

1
class ViewHolder extends RecyclerView.ViewHolder { 

     public TextView textOne; 
     public TextView textTwo; 
     public TextView textThree; 

     Typeface customTypeOne = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface One.ttf"); 
     Typeface customTypeTwo = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface Two.ttf"); 
     Typeface customTypeThree = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface Three.ttf"); 


     public ViewHolder(View itemView) { 
      super(itemView); 
      textOne = (TextView) itemView.findViewById(R.id.textView1); 
      textOne.setTypeface(customTypeOne); 
      textTwo = (TextView) itemView.findViewById(R.id.textView2); 
      textTwo.setTypeface(customTypeTwo); 
      textThree = (TextView) itemView.findViewById(R.id.textView3); 
      textThree.setTypeface(customTypeThree); 
     } 
    } 
0

实际上,你只需要将字体添加到TextView的:

public ViewHolder(View itemView) { 
    super(itemView); 
... 
textOne.setTypeface(customTypeOne) 
... 
0

您可以使用setTypeface()方法来设置YOUT创建的字体textview:

textOne.setTypeface(customTypeOne); 
textTwo.setTypeface(customTypeTwo); 
textThree.setTypeface(customTypeThree); 

我会a另外建议你看看github上的书法。这是一个强大的库来处理字体困境高效:)

https://github.com/chrisjenx/Calligraphy

0
Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/myFont.ttf"); 
viewHolder.textOne.setTypeface(myTypeface); 
viewHolder.textOne.setText(data.getTextOne()); 
0
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> { 

List<AdapterData> mItems; 

public Adapter() { 
    super(); 
    mItems = new ArrayList<>(); 
    AdapterData data = new AdapterData(); 
    data.setTextOne("Title 1"); 
    data.setTextTwo("Title 2"); 
    data.setTextThree("Title 3"); 
    mItems.add(data); 

    data = new AdapterData(); 
    data.setTextOne("Title 1"); 
    data.setTextTwo("Title 2"); 
    data.setTextThree("Title 3"); 

    data = new AdapterData(); 
    data.setTextOne("Title 1"); 
    data.setTextTwo("Title 2"); 
    data.setTextThree("Title 3"); 
    mItems.add(data); 


} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    View v = LayoutInflater.from(viewGroup.getContext()) 
      .inflate(R.layout.cardview_items, viewGroup, false); 
    return new ViewHolder(v); 
} 

@Override 
public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    AdapterData data = mItems.get(i); 
    viewHolder.textOne.setText(data.getTextOne()); 
    viewHolder.textTwo.setText(data.getTextTwo()); 
    viewHolder.textThree.setText(data.getTextThree()); 

} 


@Override 
public int getItemCount() { 

    return mItems.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder{ 

    public TextView textOne; 
    public TextView textTwo; 
    public TextView textThree; 

    Typeface customTypeOne = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface One.ttf"); 
    Typeface customTypeTwo = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface Two.ttf"); 
    Typeface customTypeThree = Typeface.createFromAsset(itemView.getContext().getAssets(), "fonts/Typeface Three.ttf"); 


    public ViewHolder(View itemView) { 
     super(itemView); 
     textOne = (TextView)itemView.findViewById(R.id.textView1); 
     textTwo = (TextView)itemView.findViewById(R.id.textView2); 
     textThree = (TextView)itemView.findViewById(R.id.textView3); 


     textOne.setTypeface(customTypeOne); 
     textTwo.setTypeface(customTypeTwo); 
     textThree.setTypeface(customTypeThree); 


    } 
} 
} 
相关问题