2014-10-28 7 views
1

xml에 사용자 정의 속성을 값으로 설정할 수 있다는 것을 알고 있지만 런타임에 나중에이 값을 변경할 수 있습니까? 런타임에 true 또는 false로 state_valid :Android에서 런타임에 맞춤 속성의 값을 변경할 수 있습니까?

<?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> 

내가 예를 변경하려면 :

나는이 XML이있다.

답변

0

아니요, 불가능합니다.

  1. 는 XML에서 * 정적 레이아웃을 부풀려
  2. 런타임에 그것을 빌드 : 난 당신이 볼 건물의 두 가지 방법을 구별해야한다고 생각

    :

    하지만 못생긴 해결 방법을 찾을 수 아래

    Java에서

사용자 정의보기의 생성자에서 레이아웃에 정의 된 정적 속성 값을 가져 와서 사용자 정의보기 클래스 필드에 저장할 수 있습니다. 그런 다음 필드에 저장된 값을 사용하여보기를 작성합니다. 보기는 일부 컨텍스트 (예 : 활동의 컨텍스트)에서 빌드되므로 이론적으로 사용자 지정 활동에 컨텍스트를 캐스팅하고 '특성 값'을 변경하려는 경우 정보를 얻을 수 있지만 xml 값이 아닌 Java 변수 만 변경합니다.

내 의견으로는보기가 너무 동적이어서 변경이 자주 일어나는 경우 XML에 간단한 컨테이너 (예 : FrameLayout)를 배치해야합니다. 그런 다음보기를 빌드하고 런타임에 컨테이너에 추가하십시오.

1

저는 이것이 오래된 질문이라는 것을 알고 있습니다. 그러나 나는 최근에 또한 알아 내려고 노력하고 있습니다. 그것은 될 일로서

안드로이드 MNC SDK의 출시는 우리에게 바인딩 데이터의 사용과 깔끔한 ​​능력을 많이 주셨습니다. 공식 문서 및 가이드는 here을 발견 할 수 있고, 정말 좋은 튜토리얼 here 사용할 수 있습니다.

아직까지 많이 연구하지는 않았지만이 새로운 방법을 사용하여 원래의 질문을 달성 할 수 있다고 생각합니다. Lemme이 도움이되는지 알아!

관련 문제