Android中部分修改字体和全局修改字体的方法
2017-06-20 09:57
495 查看
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/73480651
系统自带的字体有四种类型normal、serif、sans和monospace,直接在布局文件中设置即可:
通过Typeface.createFromAsset加载指定ttf字体,如:
注1:想要修改字体的Activity直接继承BaseActivity即可,如果想要再细化修改,再到相应的Activity中使用Typeface.createFromAsset方式修改字体
注2:需要在module的build.gradle中的dependencies节点下加入:
注3:字体文件需在和java文件平级的目录中新建assets文件夹,并将字体文件放入其中,这样加载字体:
Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9875112
———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
Demo展示图片
修改部分字体
系统自带字体系统自带的字体有四种类型normal、serif、sans和monospace,直接在布局文件中设置即可:
android:typeface="xxx"
通过Typeface.createFromAsset加载指定ttf字体,如:
Typeface typeface = Typeface.createFromAsset(getAssets(), "heijian.ttf");
全局修改字体
全局修改的文字类型只有TextView和EditText两种,即除了EditText控件及其相关控件之外的所有类型的字体都为TextView类型// BaseActivity import android.content.Context; import android.graphics.Typeface; import android.os.Bundle; import android.support.v4.view.LayoutInflaterCompat; import android.support.v4.view.LayoutInflaterFactory; import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatDelegate; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class BaseActivity extends AppCompatActivity { public static Typeface typeface1; public static Typeface typeface2; @Override protected void onCreate(Bundle savedInstanceState) { if (typeface1 == null) { typeface1 = Typeface.createFromAsset(getAssets(), "yrdzst.ttf"); } if(typeface2 == null){ typeface2 = Typeface.createFromAsset(getAssets(), "heijian.ttf"); } LayoutInflaterCompat.setFactory(LayoutInflater.from(this), new LayoutInflaterFactory() { @Override public View onCreateView(View parent, String name, Context context, AttributeSet attrs) { AppCompatDelegate delegate = getDelegate(); View view = delegate.createView(parent, name, context, attrs); // 如果控件文字类型属于TextView,则加载第一种字体 if (view != null && (view instanceof TextView)) { ((TextView) view).setTypeface(typeface1); } // 如果控件文字类型属于EditText,则加载第二种字体 if(view !=null && (view instanceof EditText)){ ((EditText) view).setTypeface(typeface2); } return view; } }); super.onCreate(savedInstanceState); } } --------------------------------------------------------------------------------------------------- // MainActivity import android.content.Context; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.ListView; import java.util.ArrayList; import java.util.List; public class MainActivity extends BaseActivity { private List<String> mArrList; private List<String> mList; private RecyclerView mRecyclerView; private ListView mListView; private Context mContext = MainActivity.this; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); } public void initView(){ mListView = (ListView) findViewById(R.id.listview); mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView); } public void initData(){ mArrList = new ArrayList<>(); mList = new ArrayList<>(); mArrList.add("一人 我饮酒醉"); mArrList.add("醉把佳人成双对"); mArrList.add("两眼 是独相随"); mArrList.add("我只求他日能双归"); mArrList.add("娇女 我轻扶琴"); mArrList.add("燕嬉 我紫竹林"); mArrList.add("我痴情红颜"); mArrList.add("我心甘情愿"); mArrList.add("我千里把君寻"); mList.add("说红颜 我痴情笑"); mList.add("曲动 我琴声妙"); mList.add("我轻狂高傲"); mList.add("我懵懂无知"); mList.add("我只怪太年少"); mList.add("弃江山 我忘天下"); mList.add("斩断情丝我无牵挂"); mList.add("千古留名传佳话"); mList.add("两年征战已白发"); mList.add("一生征战何人陪"); mList.add("我谁是谁非我谁相随"); mList.add("戎马一生为了谁"); mList.add("能爱几回我恨几回"); mList.add("败帝王 我斗苍天"); mList.add("我夺得皇位以成仙"); mList.add("豪情万丈天地间"); mList.add("续写另类我帝王篇"); mListView.setAdapter(new MyListViewAdapter(mContext , R.layout.item_listview, mArrList)); mRecyclerView.setAdapter(new MyRecyclerViewAdapter(mContext , R.layout.item_recyclerview, mList)); mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext)); } } --------------------------------------------------------------------------------------------------- // MyListViewAdapter import android.content.Context; import android.graphics.Typeface; import android.widget.TextView; import com.zhy.adapter.abslistview.CommonAdapter; import com.zhy.adapter.abslistview.ViewHolder; import java.util.List; class MyListViewAdapter extends CommonAdapter<String> { private Typeface mFromAsset; MyListViewAdapter(Context context, int layoutId, List<String> datas) { super(context, layoutId, datas); mFromAsset = Typeface.createFromAsset(mContext.getAssets(), "yrdzst.ttf"); } @Override protected void convert(ViewHolder viewHolder, String item, int position) { TextView textView= viewHolder.getView(R.id.textview_listview); textView.setTypeface(mFromAsset); viewHolder.setText(R.id.textview_listview , item); } } --------------------------------------------------------------------------------------------------- // MyRecyclerViewAdapter import android.content.Context; import android.graphics.Typeface; import android.widget.TextView; import com.zhy.adapter.recyclerview.CommonAdapter; import com.zhy.adapter.recyclerview.base.ViewHolder; import java.util.List; class MyRecyclerViewAdapter extends CommonAdapter<String> { private Typeface mFromAsset; MyRecyclerViewAdapter(Context context, int layoutId, List<String> datas) { super(context, layoutId, datas); mFromAsset = Typeface.createFromAsset(mContext.getAssets(), "yrdzst.ttf"); } @Override protected void convert(ViewHolder holder, String s, int position) { TextView textView= holder.getView(R.id.textview_recyclerview); textView.setTypeface(mFromAsset); holder.setText(R.id.textview_recyclerview , s); } } --------------------------------------------------------------------------------------------------- // activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.globalchangetext.MainActivity"> <ListView android:id="@+id/listview" android:clickable="true" android:divider="#30707070" android:layout_width="match_parent" android:layout_height="200dp" android:dividerHeight="10dp" android:scrollbars="none" android:overScrollMode="never"/> <android.support.v7.widget.RecyclerView android:layout_marginTop="20dp" android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="200dp" android:scrollbars="none" android:overScrollMode="never"/> <EditText android:id="@+id/edittext" android:text="一人我饮酒醉" android:gravity="center" android:padding="10dp" android:textSize="22sp" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> --------------------------------------------------------------------------------------------------- // item_listview.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textview_listview" android:gravity="center" android:padding="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24sp"/> --------------------------------------------------------------------------------------------------- // item_recyclerview.xml <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textview_recyclerview" android:gravity="center" android:padding="10dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24sp"/>
注1:想要修改字体的Activity直接继承BaseActivity即可,如果想要再细化修改,再到相应的Activity中使用Typeface.createFromAsset方式修改字体
注2:需要在module的build.gradle中的dependencies节点下加入:
compile 'com.zhy:base-adapter:3.0.3' compile 'com.zhy:base-rvadapter:3.0.3'
注3:字体文件需在和java文件平级的目录中新建assets文件夹,并将字体文件放入其中,这样加载字体:
Typeface typeface = Typeface.createFromAsset(getAssets(), "heijian.ttf");
Demo下载请移步:http://download.csdn.net/detail/zxc514257857/9875112
———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
相关文章推荐
- Android中对TextView中的部分内容的字体样式的设置方法
- 【Android】修改App字体的三种方法.md
- 手机APP字体库压缩精简及全局修改现有工程view字体方法
- Android 修改全局自定义字体样式(字形,大小)※
- Android 全局改变字体大小的方法
- android String文件中修改部分字体颜色
- Android之修改部分字体颜色
- 太激动!Android修改全局字体样式,替换整个APP字体
- 两种解决修改android手机设置中字体大小后系统布局混乱的方法
- Android修改自己程序字体的方法详解
- Android 修改spinner 字体颜色 样式的方法
- 关于TextView中修改部分字体颜色、大小方法的总结
- 对于修改TabBar和NavigationBar全局背景颜色、字体颜色的两个方法
- Android实现修改状态栏背景、字体和图标颜色的方法
- android修改系统字体大小,使用隐藏类和方法以及怎么生成系统app使用系统权限
- Android 全局修改字体
- android 部分手机修改led灯方法
- Android使用selector修改TextView中字体颜色和背景色的方法
- Android 修改TextView中部分字体的颜色及大小
- android开发之修改全局自定义字体