Android开发 如何重写SimpleAdapter,自定义字体的大小?

原来的代码是使用的simpleAdapter,但是字体大小只能在xml文件中修改,这样的话要想适应不同的屏幕大小只能建很多的xml文件,所以就想重写simpleAdapt... 原来的代码是使用的simpleAdapter,但是字体大小只能在xml文件中修改,这样的话要想适应不同的屏幕大小只能建很多的xml文件,所以就想重写simpleAdapter,自定义字体大小。

有没有现成的例子??具体该怎么写?
展开
 我来答
BetterXiaoJian
推荐于2016-02-29 · 超过15用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:16.6万
展开全部

下面给出我的实现方式吧,希望对你有帮助

public class MySimpleAdapter extends SimpleAdapter {
 private LayoutInflater mInflater;
 private final float titleFontSize;
 private final float screenWidth; //屏幕宽
 private final float screenHeight; //屏幕高
 public MySimpleAdapter(Context context,
   List<? extends Map<String, ?>> data, int resource, String[] from,
   int[] to) {
  super(context, data, resource, from, to);
  
  
  // 获取屏幕的长和宽
  DisplayMetrics dm = new DisplayMetrics();  
  dm = context.getResources().getDisplayMetrics();  
  screenWidth = dm.widthPixels;   
  screenHeight = dm.heightPixels;
  //设置标题字体大小
  titleFontSize = adjustTextSize();
  mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
 }
 
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
  if(convertView == null){
   convertView = mInflater.inflate(R.layout.judge_item, null);
  }
  TextView tv_title = (TextView) convertView.findViewById(R.id.itemTitle);
  TextView tv_content = (TextView) convertView.findViewById(R.id.itemContext);
  tv_title.setTextSize(titleFontSize); //设置字体大小,
  return super.getView(position, convertView, parent);
 }
 
 float adjustTextSize(){
  float textsize = 12;
  //在这实现你自己的字体大小算法,可根据之前计算的屏幕的高和宽来按比例显示
  textsize = screenWidth/320 * 12;
  
  return textsize;
 }
}

这是我的算法,希望对你有帮助哈。用的时候直接把SimpleAdapter替换成MySimpleAdapter即可~

dhaslkfha
2013-12-12 · TA获得超过388个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:44.6万
展开全部
现成的例子写起来也需要时间,不如这样,你可以直接在itemTitle或其他textview中定义字体大小,这样多方便啊。
更多追问追答
追问
但是,这样大小只能写一个固定的值。如果设备的分辨率变大或者变小的话,字体的大小无法自适应啊!
追答
在adapter中写也是一个固定值啊。如果你在adapter中能写一个适配屏幕大小的 方法的话,还不如直接写一个适配大小的工具类。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浅浅半4dab
推荐于2016-11-14 · TA获得超过617个赞
知道小有建树答主
回答量:352
采纳率:100%
帮助的人:375万
展开全部
适配器的操作:
records = new ArrayList<Map<String, String>>();

adapter = new SimpleAdapter(Activity.this, records,

android.R.layout.simple_list_item_2, new String[] { "data1",

"data2" }, new int[] { android.R.id.text2,

android.R.id.text1 });

listView.setAdapter(adapter);
设置字体大小,代码如下:
class MyAdapter extends ArrayAdapter<String> {

LayoutInflater inflator;

public StudentAdapter(Context context) {

super(context, 0);

inflator = LayoutInflater.from(context);

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = inflator.inflate(android.R.layout.simple_list_item_2, parent, false);

}

TextView text1 = (TextView) convertView.findViewById(android.R.id.text1);

TextView text2 = (TextView) convertView.findViewById(android.R.id.text2);

text1.setTextSize(14);

text2.setTextSize(12);

text1.setText("title");

text2.setText("summary");

return convertView;

}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式