Как изменить значение пользовательского атрибута?
Я могу легко изменить значение атрибута "android:text" в TextView:
textTem = (TextView) findViewById(R.id.textTem);
textTem.setText("ssss");
Но у меня есть пользовательский компонент с пользовательским атрибутом.
мой класс компонентов:
public class DayItem extends RelativeLayout {
...
}
мой пользовательский компонент в XML:
<com.example.a28210.weathpredict.DayItem
android:id="@+id/days1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
item:dayweather="snow"
item:daymaxtem="-2°"
item:daymintem="-12°"
item:daydate="12.8" />
мой пользовательский атрибут:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="DayItem">
<attr name="daydate" format="string" />
<attr name="dayweather" format="string" />
<attr name="daymaxtem" format="string" />
<attr name="daymintem" format="string" />
</declare-styleable>
</resources>
Мой вопрос: нет способа изменить значение пользовательского атрибута.
Как мне поступить, если я хочу изменить значение атрибута acustom?
DayItem d=(DayItem)view.findViewById(R.id.days1);
d. //?????
1 ответ
Измените значение представления, используя пользовательский атрибут, а не измените значение пользовательского атрибута.
Пользовательский атрибут используется для передачи значения из XML для использования в вашем пользовательском представлении. Например:
someView.text = getString(R.styleable.DayItem_dayweather) //return "snow"
Теперь вы хотите изменить значение someView из среды выполнения, просто добавьте метод в ваше пользовательское представление:
public class DayItem extends RelativeLayout {
...
void setWeather(String value){
someView.text = value
}
...
}
тогда ты можешь
DayItem d = (DayItem)view.findViewById(R.id.days1);
d.setWeather("Sunny")
Надеюсь, это поможет вам.