2011-12-13 4 views
11

현재 Android 앱을 프로그래밍 중입니다. 거기서 나는 xml- 레이아웃으로 붙어있다. 클래스에 정의 된 변수 (상수)를 사용하여 xml 태그에 값을 할당 할 수 있습니까?android : xml 요소에 상수 값 지정

모든 프로그램 상수에 대해 Constants.java라는 클래스가 있습니다. 더 나은 유지 보수를 위해이 작업을 수행합니다. 이제이 상수 중 하나를 사용하고 싶습니다. 아래에 정의 된 바와 같이 VAL은 사용자 정의 값에 대한 값으로 정의됩니다.

public class Constants { 
public static final int VAL = 10; 
... 
} 

제 경우에는 위젯이 진행 막대 (가로 스타일)이고 "android : max"값을 정의하고 싶습니다.

android:max="10" 
android:max="@Integer/val 

을하지만 난 내 상수 클래스에 정의 된 값 같은 것을 사용하고 싶습니다 : 일반적으로 하나 쓸 수

android:max="Constants.VAL" 

그에 대한 해결책이 있습니까?

감사합니다.

+0

가능하면 좋지 않다고 생각하지만, 그런 목적으로 strings.xml을 사용합니다. 그것은 당신의 상수 클래스와 같은 방식으로 사용됩니다. – belurd

답변

16

아니요, 불가능합니다. 클래스의 상수 값은 런타임에만 사용할 수 있으며 XML 파일은 런타임 전에 컴파일되고 생성됩니다.

다음으로해야 할 일은 res/values/integers.xml에 사용할 XML 상수를 선언하는 것입니다. 여기 예제 integers.xml 파일입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <integer name="max">10</integer> 
</resources> 

이 XML에서이 값을 사용하려면 다음을 수행하십시오

<YourComponent 
    android:yourattr="@integer/max"/> 
+0

상수 값을 런타임에만 사용할 수있는 경우'match_parent'가 상수이기 때문에'layout_height = "match_parent"'를 어떻게 쓸 수 있습니까? –

0

귀하의 질문은 명확하지 않습니다. 그걸로 무엇을하고 싶습니까? 상수 값을 사용하려면 상수를 사용하여 ui-widgets를 만들고 xml을 무시하십시오.

+0

나는 더 나은 이해를 위해 질문을 수정했다. 유지 관리를 위해 xml 파일에 값을 하드 코딩 할 필요가 없습니다. – grAPPfruit

0

그것은 Data Binding를 사용 가능합니다.

클래스는 다음과 비슷한 모습이 될 것 같은

class Constants extends BaseObservable { 

    private static final int MY_INT = 10; 

    @Bindable 
    public int getMyInt() { 
     return MY_INT; 
    } 
} 

및 XML을 :

<layout 
    ... 
    > 
    <data> 
     <variable 
      name="constants" 
      type="your.package.Constants" /> 
    </data> 

... 

<YourComponent 
    android:max='@{constamts.myInt}' 

... 

</layout> 
  • 가 자신을 바인딩 (binding.setConstants(constants))을 설정하는 것을 잊지 마십시오.