2012-11-05 66 views
0

如何绑定一个类TextView和BaseAdapter来传递参数给TextView?如何使用BaseAdapter绘制文字?

我BaseAdapter.class

public View getView(int position, View convertView, ViewGroup parent) { 
     // TODO Auto-generated method stub 
     ViewHolder view; 
     LayoutInflater inflator = activity.getLayoutInflater(); 

     if (convertView == null) { 
      view = new ViewHolder(); 
      convertView = inflator.inflate(R.layout.item_grid, null); 

      view.txtViewTitle = (TextView) convertView 
        .findViewById(R.id.myImageViewText); 

      convertView.setTag(view); 
     } else { 
      view = (ViewHolder) convertView.getTag(); 
     } 
     view.txtViewTitle.setText(list.get(position)); 

     return convertView; 
    } 

我的XML

<ImageView 
    android:id="@+id/myImageView" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:src="@drawable/img_1" /> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    android:paddingTop="5dip" > 

    <vbright.usanin.salesRegion.Text.TextViewOutline 
     android:id="@+id/myImageViewText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

和TextView的...

@Override 
    protected void onDraw(Canvas canvas) { 

     Paint strokePaint = new Paint(); 
     strokePaint.setARGB(255, 0, 0, 0); 
     strokePaint.setTextAlign(Paint.Align.CENTER); 

     strokePaint.setTextSize(20); 
     strokePaint.setTypeface(Typeface.DEFAULT_BOLD); 
     strokePaint.setStyle(Paint.Style.STROKE); 
     strokePaint.setStrokeWidth(5); 

     Paint textPaint = new Paint(); 
     textPaint.setARGB(255, 255, 255, 255); 
     textPaint.setTextAlign(Paint.Align.CENTER); 
     textPaint.setTextSize(20); 
     textPaint.setTypeface(Typeface.DEFAULT_BOLD); 

     int width = getWidth(); 

     canvas.drawText("Some Text", (160 - width)/2, 20, strokePaint); - **how to transfer parameters here??** 
     canvas.drawText("Some Text", (160 - width)/2, 20, textPaint); 

    } 

回答

0

你需要用String创建位图吗?

我,我这样做:在你的TextView

 // String to bitmap 
    public Bitmap StringToBitMap(String encodedString){ 
      TextView textView = new TextView(StoryActivity.this); 
      textView.layout(30, 300, 300, 500); 
      textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, 12); 
      textView.setTextColor(Color.BLACK); 
      textView.setText(encodedString); 
      textView.setDrawingCacheEnabled(true); 
      textView.setDrawingCacheQuality(2); 

      return Flip(textView.getDrawingCache()) ; 
    } 

    // flip picture 
    private Bitmap Flip(Bitmap asset) { 

      Matrix mat = new Matrix(); 
      mat.postScale(-1F, 1F); 
      int width = asset.getWidth(); 
      int height = asset.getHeight(); 

      return Bitmap.createBitmap(asset, 0, 0, width, height, mat, true); 
    } 
+0

要绘制的字符串,请在myImageViewText中设置 –

0

调用Invalidate()方法将重绘你的TextView。在TextView中为String变量使用getter和setter方法,并在onDraw中使用该字符串绘制文本。

另外不要忘记调用BaseAdapter.notifyDataSetChanged方法刷新您的适配器。

就是这样。