2012-11-05 4 views
0

comment lier une classe TextView et BaseAdapter pour passer des paramètres à TextView?comment dessiner du texte en utilisant BaseAdapter?

Mes 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; 
    } 

mon 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> 

et 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); 

    } 

Répondre

0

Vous avez besoin de créer un bitmap avec une chaîne? méthode dans votre TextView va redessiner votre 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

Chaîne à dessiner, définie dans myImageViewText –

0

invalidate d'appel():

moi je l'utiliser. Utilisez la méthode getter et setter pour une variable String dans TextView et utilisez cette chaîne dans votre onDraw pour dessiner le texte.

N'oubliez pas d'appeler la méthode BaseAdapter.notifyDataSetChanged pour actualiser votre carte.

C'est le cas.

Questions connexes