2016-08-03 3 views
0

Zuerst verwende ich setTextSize(), und dann ich setText() für meine TextView. Die Standardschriftgröße der setText() muss die Schriftgröße abdecken, die ich in setTextSize() aufgerufen habe. Aber die Methode von getView() gibt eine Ansicht zurück, um meine GridView Artikel anzuzeigen, so dass ich denke, es ist unmöglich, dass die Schriftgröße manchmal groß ist und manchmal klein ist. Was verursacht das?Mit BaseAdapter für meine GridView, ist die Schriftgröße manchmal groß und manchmal ist klein

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; 

}` 
+0

Zeigen Sie uns Ihren Code. – Geros

+0

OK.Ich habe gerade meinen Code eingefügt. – sunpeijie

Antwort

0

Sagen Sie bitte Schriftgröße als dp Einheit einstellen wollen Sie das Gerät in setTextSize Methode

passieren, wenn Sie die Textgröße mit 20dp

textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); 

oder 20px

festlegen möchten
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20); 
+0

Aber die Schriftgröße ist manchmal groß und manchmal klein, was verursacht es? – sunpeijie

+0

Ich setze setText() und dann lade ich setTextSize() auf, das Problem ist gelöst. Aber als ich zunächst setTextsize aufgerufen und dann setText aufgerufen, erschien das Problem. – sunpeijie

Verwandte Themen