我讓我的自定義組件只是將幾個TextViews放在一起。現在,我希望能夠直接從代碼初始化我的自定義控制,獨立傳遞文本的大小爲每個電視如何從java代碼中讀取自定義維度屬性
我的屬性定義:成分的
<resources>
<declare-styleable name="BasicGauge">
<attr name="valueTextSize" format="dimension" />
<attr name="titleTextSize" format="dimension" />
<attr name="unitsTextSize" format="dimension" />
</declare-styleable>
</resources>
樣品初始化:
<pl.com.digita.BikeComputerUi.customviews.BasicGauge
android:id="@+id/basicGauge1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="10dp"
valueTextSize="40sp">
</pl.com.digita.BikeComputerUi.customviews.BasicGauge>
如何嘗試讀取組件構造函數中的屬性:
final int N = typedArray.getIndexCount();
for (int i = 0; i < N; i++) {
int attribute = typedArray.getIndex(i);
switch (attribute) {
case R.styleable.BasicGauge_valueTextSize:
valueTextSize = typedArray.getString(attribute);
break;
case R.styleable.BasicGauge_titleTextSize:
titleTextSize = typedArray.getString(attribute);
break;
case R.styleable.BasicGauge_unitsTextSize:
unitsTextSize = typedArray.getString(attribute);
break;
}
typedArray.recycle();
}
問題: 創建後,我的所有值仍爲空。 40sp正是我期望的價值。
首先 - 感謝您解決我的問題。將維度值傳遞到複合組件內的TextView的最佳方式是什麼? – piotrpo
您這樣做的方式:使用自定義屬性,在構建複合視圖時檢索它,然後在創建或膨脹時將其傳遞給視圖。 – Snicolas