2012-03-21 3 views
1

サークルに関するテキストを取得しようとしています。私が分かっているのは、文字列を保持するベクトルとDrawableを保持するベクトルの2つのベクトルです。キャンバスにベクトルを描画し、それらのベクトルの要素を関連付ける?

私のonDraw()メソッドでは、ループバックして描画可能なものをキャンバスに描画します。 Stringベクトル要素とDrawableベクトルの要素を関連付ける方法を見つけたいと思います。

たとえば、ユーザーがサークル3をタップしてクリックしてサークルにテキストを追加し、これらのステップが完了すると、サークル3は対応するテキストがストリングベクトルの要素3にあることを認識します。私は分で持っているいくつかのコードonDrawで()、描画領域ベクトルは各円の文字列の保持テキスト続いキャンバスに描画することができる....

ユーザがテキストを追加するためにクリック円に、ダイアログがポップアップし、サークル上で好きなテキストを入力するようユーザーに求めます。私のonDraw(で今

stringsVector.setSize(vecForShapes.size());//set the Strings vector to the size of the Drawable vector, because there will never be more text than circles 

stringsVector.add(circleID, circleText);//add circleText to the Strings vector at position circleID. 

)私は両方のベクトルを再描画し、その円の境界にテキストを置く:私はこれを行うには、おそらく多くのより良い方法がある知っている

for(int i =0;i<_vecForShapes.size();i++) 
     { 
     Rect bounds = ((Drawable) _vecForShapes.get(i)).getBounds();//get circle i 

     String tempString = stringVect.get(i);//get string i 

     if(tempString !=null) 
     if(tempString.length() > 17) 
     { 
      canvas.drawText(tempString, 0, 11, bounds.left+10, bounds.top+30, colour); 
      canvas.drawText(tempString, 11,tempString.length(), bounds.left+5, bounds.top+40, colour); 
     }//end if 
     else 
     { 
      canvas.drawText(tempString,0,tempString.length(), bounds.left+5, bounds.top+40, colour); 
     } 
     } 

が、私はあまりにもしています今これを変更するには遠いですが、私はまだ人々の意見を聞いて喜んでいるので、次回はよく分かります。

ありがとう!

答えて

0

は、あなたが探しているものを達成する

Canvas.drawPath(Path path, Paint paint) 

Canvas.drawTextOnPath(String text, Path path, float hOffset, float vOffset, Paint paint) 

メソッドを使用します。

関連する問題