【发布时间】:2016-06-10 18:36:49
【问题描述】:
我有一个包含天气图标的 ttf 文件。我想使用这种字体在列表视图中为每日温度创建天气图标。我已经很好地设置了它,并且我也在列表视图中获得了图标,但不是在任何地方都只有八个列表视图项目之一。另外,当我向上和向下滚动时,它只会刷新到一个地方,而不是到处。我正在为我设置所有数据的列表视图发布 getview 方法。
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView==null){
convertView = LayoutInflater.from(getContext()).inflate(R.layout.activity_whether_list_style, null);
holder = new ViewHolder();
holder.description = (TextView) convertView.findViewById(R.id.description);
holder.weatherIcon = (TextView) convertView.findViewById(R.id.weather_iconT);
holder.maxTemp = (TextView) convertView.findViewById(R.id.max_temp);
holder.minTemp = (TextView) convertView.findViewById(R.id.min_temp);
holder.dayName = (TextView) convertView.findViewById(R.id.day);
convertView.setTag(holder);
}
else holder = (ViewHolder)convertView.getTag();
Daily daily = dailyTest.get(position);
holder.description.setText(daily.getDescription());
holder.dayName.setText(daily.getFormattedTime());
Typeface typeface = Typeface.createFromAsset(getAssets(), "Weather&Time.ttf" );
holder.weatherIcon.setTypeface(typeface);
holder.weatherIcon.setText(daily.getWeatherIconString());
//for two digit temp format.. adding 0 for single digits.
int maxtemp = (daily.getMaxTemp()-32)*5/9;
if(maxtemp<10){
holder.maxTemp.setText("0"+ maxtemp);
} else holder.maxTemp.setText(""+ maxtemp);
int mintemp = (daily.getMinTemp()-32)*5/9;
if(mintemp<10) {
holder.minTemp.setText("0"+ mintemp);
} else holder.minTemp.setText(""+ mintemp);
return convertView;
}
【问题讨论】:
-
如果字体是“图标字体”,如 fontello 或 fontastic,则需要引用正确的 Unicode 字符。
-
unicode 是正确的,但问题是它仅在 8 个列表视图项中呈现两个
-
你使用 Android N Dev-Preview 吗?