サイズの異なる文字列をボタン上に配置する
ヒントはここにあったけど、惜しい、XMLからstrings.xmlのリソースを指定したいのにこの方法だとダメ。あと一歩足りない。
というわけでやり方はこちら。
MultiTextViewというカスタムViewを作成します。
仕様的にはmainTextとsubTextを指定可能とし、それぞれ、テキスト、文字サイズ、文字色を指定可能とします。
まずは、XMLから指定可能な拡張attrを定義します。
valuesフォルダ配下にattrs.xmlファイルを配置して中身をこんな感じに。
-attrs.xml
次に、MultiTextButton.javaで実装。
-MultiTextButton.java
そしたら、実際のLayout上にMultiTextButtonを配置していく。
ポイントは「app」namespace。
xmlns:app="http://schemas.android.com/apk/res/com.awwa.sample.MultiTextButton"
を定義しておくこと。
-なんちゃら.xml
そもそもボタン上に違うサイズの文字なんか置くな、って言いたい。
というわけでやり方はこちら。
MultiTextViewというカスタムViewを作成します。
仕様的にはmainTextとsubTextを指定可能とし、それぞれ、テキスト、文字サイズ、文字色を指定可能とします。
まずは、XMLから指定可能な拡張attrを定義します。
valuesフォルダ配下にattrs.xmlファイルを配置して中身をこんな感じに。
-attrs.xml
次に、MultiTextButton.javaで実装。
-MultiTextButton.java
public class MultiTextButton extends Button {
public MultiTextButton(Context context, AttributeSet attrs) {
super(context, attrs);
initAttribute(context, attrs);
TypedArray a =
context.obtainStyledAttributes(attrs, R.styleable.MultiTextButton);
CharSequence mt = a.getText(R.styleable.MultiTextButton_mainText);
CharSequence st = a.getText(R.styleable.MultiTextButton_subText);
if ( mt != null )
mainText = mt.toString();
if ( st != null )
subText = st.toString();
mainTextSize =
a.getDimension(R.styleable.MultiTextButton_mainTextSize, 10.0f);
subTextSize =
a.getDimension(R.styleable.MultiTextButton_subTextSize, 10.0f);
mainTextColor = attrs.getAttributeIntValue(null, "mainTextColor", Color.WHITE);
subTextColor = attrs.getAttributeIntValue(null, "subTextColor", Color.WHITE);
a.recycle();
}
@Override
protected void onDraw(Canvas canvas) {
// TODO 適当に描画処理。面倒なので割愛
}
}
そしたら、実際のLayout上にMultiTextButtonを配置していく。
ポイントは「app」namespace。
xmlns:app="http://schemas.android.com/apk/res/com.awwa.sample.MultiTextButton"
を定義しておくこと。
-なんちゃら.xml
android:layout_width="fill_parent"
android:layout_height="fill_parent"
app:mainText="@string/kore_ga_yaritakatta"
app:subText="直接文字だって"
app:mainTextSize="20sp"
app:subTextSize= "40sp"
/>
そもそもボタン上に違うサイズの文字なんか置くな、って言いたい。
コメント
コメントを投稿