반응형
데이터 바인딩을 사용하여보기 가시성 설정
이 질문에 이미 답변이 있습니다.
View맞춤 변수 사용의 가시성을 설정하려고하는데 오류가 발생합니다 Identifiers must have user defined types from the XML file. visible is missing it.. 데이터 바인딩을 사용하여보기 가시성을 설정할 수 있습니까? 감사.
<data>
<variable
name="sale"
type="java.lang.Boolean"/>
</data>
<FrameLayout android:visibility="@{sale ? visible : gone}"/>
Android 개발자 가이드에 명시된대로 다음과 같이 해야합니다.
<data>
<import type="android.view.View"/>
<variable
name="sale"
type="java.lang.Boolean"/>
</data>
<FrameLayout android:visibility="@{sale ? View.GONE : View.VISIBLE}"/>
레이아웃에서 :
<data>
<variable
name="viewModel"
type="...."/>
</data>
<View
android:layout_width="10dp"
android:layout_height="10dp"
android:visibility="@{viewModel.saleVisibility, default=gone}"/>
ViewModel Java 코드에서 :
@Bindable
public int getSaleVisibility(){
return mSaleIndecator ? VISIBLE : GONE;
}
문제는이다 visibility입니다 Integer온 View당신이이 일을하는 방법은 두 가지가 클래스,이 수단 :
View.VISIBLE및View.GONE상수를 사용하십시오 . https://developer.android.com/topic/libraries/data-binding/index.html#imports- Define a custom setter for
visibilitythat takes aBoolean. https://developer.android.com/topic/libraries/data-binding/index.html#custom_setters
Possible implementation:
@BindingAdapter("android:visibility")
public static void setVisibility(View view, Boolean value) {
view.setVisibility(value ? View.VISIBLE : View.GONE);
}
Which will make <FrameLayout android:visibility="@{sale}"/> work.
ReferenceURL : https://stackoverflow.com/questions/44420396/use-data-binding-to-set-view-visibility
반응형
'developer tip' 카테고리의 다른 글
| Windows PowerShell에 파일이 있는지 확인 하시겠습니까? (0) | 2021.01.09 |
|---|---|
| BottomNavigationView 레이블 제거 (0) | 2021.01.09 |
| WPF : UserControl에서 표시하는 대화 상자의 소유자 창을 어떻게 설정합니까? (0) | 2021.01.09 |
| Python Selenium으로 요소가 존재하는지 확인 (0) | 2021.01.09 |
| C ++ (확장)의 WINMAIN 및 main () (0) | 2021.01.09 |