-1

我可以轻松更改 TextView 的“android:text”属性的值:

    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>

我的问题是:没有方法可以更改自定义属性的值。
如果我想更改自定义属性的值,我应该怎么做?

                    DayItem d=(DayItem)view.findViewById(R.id.days1);
                    d.     //?????
4

1 回答 1

0

更改视图的值使用自定义属性,而不是更改自定义属性的值。

自定义属性用于从 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")  

希望这可以帮助你。

于 2017-12-12T15:29:18.853 回答