我有一个使用 ViewPager 的 Android 应用程序,它可以正常工作,但现在我想在我的视图中添加自定义字体,当我在页面之间滑动时,我会更改布局。这是我的代码:
import com.viewpagerindicator.TitlePageIndicator;
import com.viewpagerindicator.TitleProvider;
import android.app.Activity;
import android.content.Context;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
/** *************************************************************************************************
/** Clase: public class LCMeter extends Activity
/** Notas: esta Activity usa desplazamiento por paginas horizontal
/** Funcion: obtiene de puerto USB los datos de frecuencia, inductancia, capacitancia y los muestra
/** con multiples funciones como creacion de graficos, logs, etc
****************************************************************************************************/
public class LCMeter extends Activity {
// titulos de las paginas
private static String[] titulosPaginas = { "APP 1", "APP 2", "APP 3" };
private Context cxt;
private ViewPager columnas;
private ColumnasAdapter myAdapter;
TextView txt;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); //layout con PagerViewer
cxt = this;
myAdapter = new ColumnasAdapter();
columnas = (ViewPager) findViewById(R.id.columnas);
columnas.setAdapter(myAdapter);
// Agrega los titulos
TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titulos); //layout XML
titleIndicator.setViewPager(columnas);
}
/** *************************************************************************************************
/** Clase: private class ColumnasAdapter extends Pager Adapter implements TitleProvider
/** Notas: extends PagerAdapter hace uso de la libreria y al usar implements TitleProvider permite
/** colocar titulos a las paginas por las que nos movemos
/** Funcion: crea paginas por las cuales deslizarse hotizontalmente cambiando los Layout
****************************************************************************************************/
private class ColumnasAdapter extends PagerAdapter implements TitleProvider {
/// Obtiene numero de paginas en este caso el numero de elementos en el String
@Override
public int getCount() {
return titulosPaginas.length;
}
// Obtiene el titulo para ponerle a la pagina
@Override
public String getTitle(int position) {
// TODO Auto-generated method stub
return titulosPaginas[position]; // titulo de la pagina
}
//Cambia los layout de acuerdo a las paginas
@Override
public Object instantiateItem(View collection, int position) {
LinearLayout v = (LinearLayout) LayoutInflater.from(cxt).inflate(R.layout.lcmeter, null);
// Ejecuto una Activity de acuerdo a la pagina en la que este
switch (position) {
case 0:
v = (LinearLayout) LayoutInflater.from(cxt).inflate(R.layout.lcmeter, null);
break;
}
((ViewPager) collection).addView(v, 0);
return v;
}
//Destruye las paginas cuando dejan de usarse
@Override
public void destroyItem(View collection, int position, Object view) {
((ViewPager) collection).removeView((LinearLayout)view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((LinearLayout) object);
}
@Override
public void finishUpdate(View arg0) {}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {}
}
}
我想在名为“lcmeter”的布局上添加自定义字体,但是当我放它时:
TextView txt = (TextView) findViewById(R.id.custom_font);
Typeface font = Typeface.createFromAsset(getAssets(), "Chantelli_Antiqua.ttf");
txt.setTypeface(font);
我在运行应用程序时得到了 FC,但是当我将相同的代码放在一个简单的 Activity whitout ViewPager 上时,它工作得很好,我认为问题出在:
Typeface font = Typeface.createFromAsset(getAssets(), "Chantelli_Antiqua.ttf");
也许上下文不正确,但我对此很陌生,所以我不太了解。谢谢 :)