2016-12-01 19 views
0

Screenshot after my code was finishedenter image description here問題の検索センターが

ウォッチフェイスを着用し、私はすべての上に見てきましたが、何も働いていません。ウォッチフェイスの画面の中心を見つけるたびに、常に中央よりわずかに高くなり、画面の右端に表示されます(これはAndroid Studioの元のテンプレートのウォッチフェイスはわずかに上にあり、画面の左端まであります)。私は何が間違っていますか?

(左側の最初のスクリーンショット:私の問題セカンドスクリーンショット:AndroidのメーカーからAndroid Wearテンプレートのオリジナル形式)

@Override 
    public void onDraw(Canvas canvas, Rect bounds) { 
     if (isInAmbientMode()) {canvas.drawColor(Color.BLACK); 
     } 
     else { 
      canvas.drawRect(0, 0, bounds.width(), bounds.height(), mBackgroundPaint); 
     } 

     // Draw H:MM in ambient mode or H:MM:SS in interactive mode. 
     long now = System.currentTimeMillis(); 
     mCalendar.setTimeInMillis(now); 
     int width = bounds.width(); 
     int height = bounds.height(); 
     float centerX = width/2f; 
     float centerY = height/2f; 

     String text = mAmbient 
       ? String.format("%d:%02d", mCalendar.get(Calendar.HOUR), 
       mCalendar.get(Calendar.MINUTE)) 
       : String.format("%d:%02d", mCalendar.get(Calendar.HOUR), 
       mCalendar.get(Calendar.MINUTE)); 
     canvas.drawText(text, centerX, centerY, mTextPaint); 
    } 

完全なコードは、私の知る限りhere

答えて

3

を見つけることができますmTextXOffsetmTextYOffsetを既に計算していますが、ドローコールでは使用しないため、テキストの原点はテキストセンターの代わりに問題のあるスクリーンショットの中央に表示されます。

centerXcenterYmTextXOffsetmTextYOffsetに設定すると効果があります。

0

あなたが中心から描画します

mTextPaint.setTextAlign(Paint.Align.CENTER); 

を使用することができ、中心点を使用してテキストを描画している場合。それ以外の場合、x座標は描画しているテキストの左辺を表します。