現在画像に文字を入れることができるAndroidアプリを開発しています。
画像をアプリに取り込み、文字をタップして移動させたり、文字の色や太さを変えることができます。
[問題]
現在問題なのは文字を移動してから文字サイズを変更した際に、始めに文字を挿入した位置に文字が戻ってしまうことです。
[コードの説明]
RelativeLayoutの子ViewとしてTextViewを挿入しています
(TextViewをRelativeLayoutに追加する際のコード抜粋)
TextView temText = new TextView(アクティビティ); temText.setText(文字列); temText.setTextSize(指定サイズ); temText.setTextColor(指定色); // サイズはコンテンツに合わせる RelativeLayout.LayoutParams temParam = createParam(WC, WC); // 画像の中央にセットする temParam.addRule(RelativeLayout.CENTER_IN_PARENT); this.relativeLayout.addView(temText,1,temParam);
(文字サイズを変更する際のコード抜粋)
// 文字を小さくするときに、androidのバグで枠線が小さくならないので // 文字を再設定 this.textView.setText(this.textView.getText(),TextView.BufferType.SPANNABLE); // 文字サイズ変更 this.textView.setTextSize(((int)mBar.getProgress() + 1));
[自分なりの分析]
文字サイズを変更する際にsetTextを行っていますが、この処理によってaddRuleで指定したルールが再び反映されてしまい中央に戻ってしまうようです。
[自分なりの対処]
文字サイズを変更してから、TextViewがonPreDrawされる際にTextViewの文字サイズを変更する時点での座標を再設定するなどの対処をしました。
同じタイミングでsetTextも再設定しました。
しかし、文字が中央に戻るのは変わらずでした。
[アドバイスのお願い]
次のような方法があれば教えていただけないでしょうか
・addRuleの設定がsetTextする際に反映されない方法
・またはTextViewの文字サイズ変更前の座標を保持して、それをaddRuleの設定反映後に再設定する方法
以上宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。