2016-08-16 2 views
2

DataBinding을 사용하여 android:textAppearance을 설정하려고하지만, 세 번째 연산자 인 ?android:attr/textAppearanceLarge을 사용할 수 없습니다.android : textAppearance with DataBinding

android:textAppearance="@{position==1 ? ?android:attr/textAppearanceLarge : ?android:attr/textAppearanceMedium}" 

나를 시간 오류 <expr> expected, got '?' 컴파일 보이고있다.

DataBinding과 함께 다른 방법이 있습니까? ?

+0

마음을주고 의견이나 대답을 받아 : 당신이 이전에 원하는대로

<data> <import type="<your-package-id>.R" </data> 

마지막으로 모양을 적용 : 처음 <data> 블록에 프로젝트의 R 클래스를 가져해야합니다 ? –

답변

1

대신 안드로이드의 android.R.attr 패키지를 사용할 수 있습니다

<?xml version="1.0" encoding="utf-8"?> 
<layout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools"> 

    <data> 
     <import type="android.R.attr"/> 

    </data> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="hello world" 
      android:textAppearance='@{age==1 ? android.R.attr.textAppearanceLarge : android.R.attr.textAppearanceMedium}' 
      tools:textAppearance="?android:textAppearanceLarge" 
      /> 


    </LinearLayout> 
</layout> 
+0

고마워요,이 작동하지만 어떻게 든 그것을 사용할 수 없습니다. 왜냐하면이 메서드는'typeFace'를 재정의하기 때문에 사용자 정의 글꼴도 사용할 수 없기 때문입니다. –

4
대신 textAppearance의 텍스트 스타일을 사용한다

,

시도 attr에 코드를 사용하여 아래 제공 :

android:textStyle="@{position==1 ? @style/TextAppearance.Material.Large  :@style/TextAppearance.Material.Medium}" 

For more reference use below image

+3

이게 작동하지 않습니다. ' 예기치'got '?' ' –

1

여기서는 직접 사용할 수 없지만 그런 경우에 내가 사용하는 속임수. 부모로 textAppearanceLargetextAppearanceMedium를 사용하여 자신의 스타일을 만든 다음 대신 이러한 스타일을 설정합니다

먼저 Foo 스타일을 만들 :

<style name="Foo" parent="TextAppearance.AppCompat.Large"> 
    ... [whatever you need to set or override ] ... 
</style> 

FooMedium에 대한 동일한 작업을 수행. 그런 다음 아래 그림과 같이 레이아웃 파일을 편집하십시오. 당신을 위해 작업 솔루션이 있다면이 질문에 대한

android:textAppearance="@{ position==1 ? R.style.Foo ? R.style.FooMedium }" 
+0

+1 좋은 해결 방법 같습니다. 그러나 나는 스타일 속성에 대해 작동하게 만들 수 없습니다 : expected, got '?' 스타일에 맞지 않는다는 것을 확인할 수 있습니까? –

+0

'