2014-10-28 86 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

我還沒有真正探索過這麼多,但我相信現在可以通過使用這種新方法來實現原始問題。讓我知道這是否有幫助!

相關問題