2014-10-28 3 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 к истинным или ложным во время выполнения.

ответ

0

Нет, вы не можете.

Но ниже вы можете найти уродливое обходной путь:

Я думаю, вы должны различать два способа зрения здания:

  1. раздувать * статический макет из XML
  2. Построить его во время выполнения в Java

В конструкторе пользовательского вида вы можете получить значения статических атрибутов, определенные в макете, и сохранить их в полях класса пользовательского вида. Затем значения, хранящиеся в полях, используются для создания вашего представления. Просмотр создается в некотором контексте (например, в контексте активности), поэтому вы можете использовать контекст для своего пользовательского действия и получать информацию, если хотите изменить значение атрибута или нет, но вы измените только переменную Java, а не значение xml.

На мой взгляд, если ваше мнение настолько динамично, что оно будет меняться очень часто, вам следует рассмотреть возможность размещения в XML просто простого контейнера (например, FrameLayout). Затем создайте свое представление и добавьте его в контейнер во время выполнения.

1

Я знаю, что это старый вопрос, однако это то, что я недавно пытался выяснить.

Как случается, выпуск Android MNC SDK дал нам много аккуратных способностей с использованием Data Binding. Официальная документация и руководство можно найти here, и действительно хороший учебник доступен here.

Я на самом деле не изучил это много, но я считаю, что теперь можно получить исходный вопрос, используя этот новый метод. Лемме знаю, помогает ли это!

Смежные вопросы