私はカスタムTextViewを持っていて、コンストラクタ内で、特定のXMLプロパティが宣言されているかどうかを、対応するxmlレイアウトで調べる必要があります。 (運なし)これが有効である場合、私は知りませんが、私は次のことを試してみましたXMLプロパティが定義されているかどうかを知る方法?
<com.stuff.CustomTextView
android:id="@+id/tv01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="8sp" />
public CustomTextView(Context context, AttributeSet attrs) {
super(context, attrs);
// find out if textSize was defined
if (!wasAttributeDefined(attrs,"textSize")) // EDIT
setTextSize(10); // EDIT
}
:
attrs.getAttributeFloatValue("android","textSize",(float)-1.0);
感謝。
EDIT:誰もが興味を持っている場合
も、これを解決するための(おそらくあまりよくない)方法があります。
private boolean wasAttributeDefined(AttributeSet attrs, String name) {
for (int i=0; i<attrs.getAttributeCount(); i++)
if (attrs.getAttributeName(i).equals(name))
return true;
return false;
}
は、あなたのログを置いていましたか?エラーが発生しましたか? –
エラーはありません。 XMLにアンドロイド:textSizeを定義したにもかかわらず、私が提供したデフォルト値(-1.0)を得ているだけです。 – takecare