まず、setTextSize()
を使用してから、TextView
の場合はsetText()
を使用します。 setText()
の既定のフォントサイズは、私がsetTextSize()
で呼び出したフォントサイズをカバーする必要があります。しかし、getView()
のメソッドは、私のGridView
アイテムを表示するビューを返すので、フォントサイズが時々大きくて、時には小さいとは思えません。これを引き起こしているのは何ですか?GridViewにBaseAdapterを使用すると、フォントサイズが大きくて時には小さい
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = LayoutInflater.from(mContext)
.inflate(R.layout.gridview_monitoring_item,null);
viewHolder.mImageMark = (ImageView) convertView
.findViewById(R.id.gridview_site_mark);
viewHolder.mSiteIdText = (TextView) convertView
.findViewById(R.id.gridview_site_id);
viewHolder.mStatusText = (TextView) convertView
.findViewById(R.id.gridview_status);
viewHolder.siteNameTextView = (TextView) convertView
.findViewById(R.id.gridview_site_name);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Map<Integer,String> map = mMonitoringData.get(position);
if (map.get(R.id.gridview_site_mark).equals("server")) {
viewHolder.mImageMark.setImageDrawable(mContext.getResources().getDrawable(
R.drawable.ic_server));
} else if (map.get(R.id.gridview_site_mark).equals("website")) {
viewHolder.mImageMark.setImageDrawable(mContext.getResources().getDrawable(
R.drawable.ic_website));
}
viewHolder.mStatusText.setText(map.get(R.id.gridview_status));
viewHolder.mSiteIdText.setText(map.get(R.id.gridview_site_id));
viewHolder.siteNameTextView.setText(map.get(R.id.gridview_site_name));
if (mContext.getString(R.string.unknown).equals(map.get(R.id.gridview_status))) { //如果是unknown
convertView.setBackgroundResource(R.color.siteUnknowBackground);
} else if (map.get(R.id.gridview_status).contains("OK") || map.get(R.id.gridview_status).contains("open")) {
convertView.setBackgroundResource(R.color.siteRunningBackground);
viewHolder.siteNameTextView.setTextColor(mContext.getResources().getColor(
R.color.siteRunningNameTextColor));
viewHolder.mStatusText.setTextColor(mContext.getResources().getColor(
R.color.siteRunningStatusTextColor));
}
if (map.get(IS_NOMAL).equals("false") =) { //有log且站点不正常时,显示出红色
convertView.setBackgroundResource(R.color.siteDownBackground);
viewHolder.siteNameTextView.setTextColor(mContext.getResources()
.getColor(R.color.siteDownNameTextColor));
viewHolder.mStatusText.setTextColor(mContext.getResources().getColor(
R.color.siteDownStatusTextColor));
}
/**
* 设置字体大小
*/
viewHolder.mStatusText.setTextSize(mContext.getResources().getDimension(
R.dimen.status_text_small));
viewHolder.mSiteIdText.setTextSize(mContext.getResources().getDimension(
R.dimen.status_text_small));
if (PublicFunction.isTablet(mContext)) {
int x = PublicFunction.getXdpi(mContext);
viewHolder.mStatusText.setPadding(0, (x/2), 0, 0);
viewHolder.mStatusText.setTextSize(14);
viewHolder.mSiteIdText.setTextSize(14);
if (viewHolder.siteNameTextView.length() > 10
&& viewHolder.siteNameTextView.length() < 14) {
viewHolder.siteNameTextView.setTextSize(26);
} else if (viewHolder.siteNameTextView.length() > 13) {
viewHolder.siteNameTextView.setTextSize(22);
} else {
viewHolder.siteNameTextView.setTextSize(32);
}
} else {
if (viewHolder.siteNameTextView.length() > 10
&& viewHolder.siteNameTextView.length() < 14) {
viewHolder.siteNameTextView.setTextSize(20);
} else if (viewHolder.siteNameTextView.length() > 13) {
viewHolder.siteNameTextView.setTextSize(16);
} else {
viewHolder.siteNameTextView.setTextSize(26);
}
}
/**
* 设置字体颜色
*/
viewHolder.siteNameTextView.setTextColor(mContext.getResources().getColor(
R.color.siteRunningNameTextColor));
viewHolder.mStatusText.setTextColor(mContext.getResources().getColor(
R.color.siteRunningStatusTextColor));
return convertView;
}`
コードを表示してください。 – Geros
OK.Iは自分のコードを貼り付けました。 – sunpeijie