我知道可以在xml上设置自定义属性及其值,但是, 可以在运行时稍后更改该值吗?
我有这个xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:example="http://schemas.android.com/apk/res/ValidatedButton.ValidatedButton"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<validatedbutton.ValidatedButton
android:id="@+id/myButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/icon_selector"
example:state_valid="false"
android:text="@string/hello" />
</LinearLayout>
我想在运行时更改示例:state_valid为true或false。
答案 0 :(得分:1)
我知道这是一个老问题,但是我最近也试图弄清楚这个问题。
碰巧的是, Android MNC sdk的发布为我们提供了很多利用数据绑定的整洁能力。官方文档和指南可以在 here 找到,并且提供了一个非常好的教程 here 即可。
我实际上并没有对此进行过多次探索,但我相信现在可以通过使用这种新方法来实现原始问题。 Lemme知道这有用吗!
答案 1 :(得分:0)
不,你不能。
但是下面你可以找到丑陋的解决方法:
我认为你应该区分两种构建视图的方式:
在自定义视图的构造函数中,您可以获取在布局中定义的静态属性值,并将它们保存在自定义视图类字段中。然后,存储在字段中的值用于构建视图。视图是在某些上下文中构建的(例如,在活动的上下文中),因此从理论上讲,您可以将上下文强制转换为自定义活动,并在需要更改属性值时获取信息。或不,但您将只更改Java变量,而不是xml值。
在我看来,如果你的视图是如此动态,它会经常改变,你应该考虑在XML中放置简单的容器(例如FrameLayout)。然后构建视图并在运行时将其添加到容器中。