Android开发 如何重写SimpleAdapter,自定义字体的大小?
原来的代码是使用的simpleAdapter,但是字体大小只能在xml文件中修改,这样的话要想适应不同的屏幕大小只能建很多的xml文件,所以就想重写simpleAdapt...
原来的代码是使用的simpleAdapter,但是字体大小只能在xml文件中修改,这样的话要想适应不同的屏幕大小只能建很多的xml文件,所以就想重写simpleAdapter,自定义字体大小。
有没有现成的例子??具体该怎么写? 展开
有没有现成的例子??具体该怎么写? 展开
3个回答
展开全部
下面给出我的实现方式吧,希望对你有帮助
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即可~
展开全部
现成的例子写起来也需要时间,不如这样,你可以直接在itemTitle或其他textview中定义字体大小,这样多方便啊。
更多追问追答
追问
但是,这样大小只能写一个固定的值。如果设备的分辨率变大或者变小的话,字体的大小无法自适应啊!
追答
在adapter中写也是一个固定值啊。如果你在adapter中能写一个适配屏幕大小的 方法的话,还不如直接写一个适配大小的工具类。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
适配器的操作:
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;
}
}
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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询