ViewBindingAdapter.java revision c619d8f69127c1200103d8119101c5f0675661d0
1/* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16package android.databinding.adapters; 17 18import android.databinding.BindingAdapter; 19import android.databinding.BindingMethod; 20import android.databinding.BindingMethods; 21import android.os.Build; 22import android.view.View; 23 24@BindingMethods({ 25 @BindingMethod(type = android.view.View.class, attribute = "android:backgroundTint", method = "setBackgroundTintList"), 26 @BindingMethod(type = android.view.View.class, attribute = "android:fadeScrollbars", method = "setScrollbarFadingEnabled"), 27 @BindingMethod(type = android.view.View.class, attribute = "android:nextFocusForward", method = "setNextFocusForwardId"), 28 @BindingMethod(type = android.view.View.class, attribute = "android:nextFocusLeft", method = "setNextFocusLeftId"), 29 @BindingMethod(type = android.view.View.class, attribute = "android:nextFocusRight", method = "setNextFocusRightId"), 30 @BindingMethod(type = android.view.View.class, attribute = "android:nextFocusUp", method = "setNextFocusUpId"), 31 @BindingMethod(type = android.view.View.class, attribute = "android:nextFocusDown", method = "setNextFocusDownId"), 32 @BindingMethod(type = android.view.View.class, attribute = "android:requiresFadingEdge", method = "setVerticalFadingEdgeEnabled"), 33 @BindingMethod(type = android.view.View.class, attribute = "android:scrollbarDefaultDelayBeforeFade", method = "setScrollBarDefaultDelayBeforeFade"), 34 @BindingMethod(type = android.view.View.class, attribute = "android:scrollbarFadeDuration", method = "setScrollBarFadeDuration"), 35 @BindingMethod(type = android.view.View.class, attribute = "android:scrollbarSize", method = "setScrollBarSize"), 36 @BindingMethod(type = android.view.View.class, attribute = "android:scrollbarStyle", method = "setScrollBarStyle"), 37 @BindingMethod(type = android.view.View.class, attribute = "android:transformPivotX", method = "setPivotX"), 38 @BindingMethod(type = android.view.View.class, attribute = "android:transformPivotY", method = "setPivotY"), 39}) 40public class ViewBindingAdapter { 41 public static int FADING_EDGE_NONE = 0; 42 public static int FADING_EDGE_HORIZONTAL = 1; 43 public static int FADING_EDGE_VERTICAL = 2; 44 45 @BindingAdapter("android:padding") 46 public static void setPadding(View view, int padding) { 47 view.setPadding(padding, padding, padding, padding); 48 } 49 50 @BindingAdapter("android:paddingBottom") 51 public static void setPaddingBottom(View view, int padding) { 52 view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), 53 padding); 54 } 55 56 @BindingAdapter("android:paddingEnd") 57 public static void setPaddingEnd(View view, int padding) { 58 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 59 view.setPaddingRelative(view.getPaddingStart(), view.getPaddingTop(), padding, 60 view.getPaddingBottom()); 61 } else { 62 view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), padding, 63 view.getPaddingBottom()); 64 } 65 } 66 67 @BindingAdapter("android:paddingLeft") 68 public static void setPaddingLeft(View view, int padding) { 69 view.setPadding(padding, view.getPaddingTop(), view.getPaddingRight(), 70 view.getPaddingBottom()); 71 } 72 73 @BindingAdapter("android:paddingRight") 74 public static void setPaddingRight(View view, int padding) { 75 view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), padding, 76 view.getPaddingBottom()); 77 } 78 79 @BindingAdapter("android:paddingStart") 80 public static void setPaddingStart(View view, int padding) { 81 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 82 view.setPaddingRelative(padding, view.getPaddingTop(), view.getPaddingEnd(), 83 view.getPaddingBottom()); 84 } else { 85 view.setPadding(padding, view.getPaddingTop(), view.getPaddingRight(), 86 view.getPaddingBottom()); 87 } 88 } 89 90 @BindingAdapter("android:paddingTop") 91 public static void setPaddingTop(View view, int padding) { 92 view.setPadding(view.getPaddingLeft(), padding, view.getPaddingRight(), 93 view.getPaddingBottom()); 94 } 95 96 @BindingAdapter("android:requiresFadingEdge") 97 public static void setRequiresFadingEdge(View view, int value) { 98 final boolean vertical = (value & FADING_EDGE_VERTICAL) != 0; 99 final boolean horizontal = (value & FADING_EDGE_HORIZONTAL) != 0; 100 view.setVerticalFadingEdgeEnabled(vertical); 101 view.setHorizontalFadingEdgeEnabled(horizontal); 102 } 103 104 @BindingAdapter(attributes={"android:onClickListener", "android:clickable"}) 105 public static void setClickListener(View view, View.OnClickListener clickListener, 106 boolean clickable) { 107 view.setOnClickListener(clickListener); 108 view.setClickable(clickable); 109 } 110} 111