为我的 GridView 使用 BaseAdapter,字体大小有时大有时小

Using BaseAdapter for my GridView, the font-size sometimes is big and sometimes is small

首先我使用 setTextSize(),然后我 setText() 用于我的 TextViewsetText() 的默认字体大小必须覆盖我在 setTextSize() 中调用的字体大小。但是 getView() returns 视图显示我的 GridView 项目的方法所以我认为字体大小有时大有时小是不可能的。这是什么原因造成的?

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;

}`

假设您想将字体大小设置为 dp 单位,您必须在 setTextSize 方法中传递单位

如果要设置文字大小20dp

textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20);

或 20px

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20);