2016-08-03 22 views
0

まず、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; 

}` 
+0

コードを表示してください。 – Geros

+0

OK.Iは自分のコードを貼り付けました。 – sunpeijie

答えて

0

あなたはdp単位として、フォントサイズを設定したいあなたは20dp

textView.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 20); 

または20ピクセル

で文字サイズを設定したい場合は setTextSize方法

でユニットを渡す必要が言います

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 20); 
+0

しかし、font-sizeは大きく、時には小さくなることもありますが、その原因は何ですか? – sunpeijie

+0

setText()を呼び出してsetTextSize()を呼び出すと、問題は解決されます。しかし、最初にsetTextsizeを呼び出してからsetTextを呼び出すと、問題が発生しました。 – sunpeijie

関連する問題