2014-10-28 84 views
1

我知道你可以在xml中设置自定义属性及其值,但是, 可以稍后在运行时更改该值吗?在Android中,可以在运行时更改自定义属性的值吗?

我有这样的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. 从XML充气*静态布局
  2. 构建它上运行在Java中

在您的自定义视图的构造函数您可以获取在布局中定义的静态属性值并将其保存在自定义视图类字段中。然后存储在字段中的值用于构建视图。视图是在某个上下文中构建的(例如,在活动的上下文中),所以在理论上,您可以将上下文转换为自定义活动,并在需要更改'属性值'时获取信息,但只会更改Java变量,而不会更改xml值。

在我看来,如果你的视图如此动态,它会经常改变,你应该考虑放置在XML只是简单的容器(例如FrameLayout)。然后构建您的视图并在运行时将其添加到容器。

1

我知道这是一个古老的问题,但这是我最近一直在努力弄清楚的。

碰巧的是,在Android的MNC SDK的发布已经给了我们很多整齐的能力用结合使用数据。官方文件和指导,可以发现here,和一个很好的教程,请here

我还没有真正探索过这么多,但我相信现在可以通过使用这种新方法来实现原始问题。让我知道这是否有帮助!

相关问题