Как изменить значение пользовательского атрибута?

Я могу легко изменить значение атрибута "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")  

Надеюсь, это поможет вам.

Другие вопросы по тегам