2017-04-13 48 views
0

我膨脹的TabLayout與我的Activity類內的數據綁定佈局。並且我堅持的數據綁定在TextView之內。我的佈局代碼如下:TextView數據綁定爲android:drawableBottom

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

<data> 

    <variable 
     name="item" 
     type="<package-name>.HomeTabItem"/> 

</data> 

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:maxLines="1" 
    android:text="@={item.name}" 
    android:textColor="@color/white" 
    android:drawableBottom="<What I have to-do here>" 
    android:textSize="@dimen/dimen_18" /> 
</layout> 

Activity類中綁定的Java代碼如下:

private void setTabsLayoutItems() { 

    String tabItems[] = getResources().getStringArray(R.array.home_tab_items); 
    TypedArray tabItemsDrawable = getResources().obtainTypedArray(R.array.home_tab_items_drawable); 

    for (int i = 0; i < tabItems.length; i++) { 

     CustomTabBinding binding = DataBindingUtil.inflate(getLayoutInflater(), R.layout.custom_tab, tabLayout, false); 

     int id = tabItemsDrawable.getResourceId(i, -1); 

     HomeTabItem obj = new HomeTabItem(); 
     obj.setName(tabItems[i]); 
     obj.setIcon(id); 
     binding.setItem(obj); 
     View cropsTab = binding.getRoot(); 

     tabLayout.addTab(tabLayout.newTab().setCustomView(cropsTab)); 
    } 

    tabItemsDrawable.recycle(); 

} 

HomeTabItem類如下:

public class HomeTabItem extends BaseObservable { 

    private String name; 

    private int icon; 

    @Bindable 
    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
     notifyPropertyChanged(com.sdei.farmx.BR.name); 
    } 

    @Bindable 
    public int getIcon() { 
     return icon; 
    } 

    public void setIcon(int icon) { 
     this.icon = icon; 
     notifyPropertyChanged(com.sdei.farmx.BR.icon); 
    } 

} 
+0

的android:背景= 「@繪製/ rounded_corner_search」 –

回答

1

嘗試設置iconID直接,如下所示:

android:drawableBottom="@{item.icon}" 

如果它不起作用,您將不得不創建自定義綁定來設置它。要做到這一點,創建一個名爲綁定final類,並添加如下方法:

@BindingAdapter({"icon"}) 
    public static void icon(TextView view, int iconId) { 
     view.setCompoundDrawables(null,null,null, view.getContext().getDrawable(iconId)); 
} 

,並調用它在你的佈局:

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center" 
    android:maxLines="1" 
    android:text="@={item.name}" 
    android:textColor="@color/white" 
    app:icon="@{item.icon}" 
    android:textSize="@dimen/dimen_18" /> 
</layout> 
+0

最後一類?你能解釋一下嗎? –

+0

只是一個簡單的類與這個名字 –