2015-09-04 29 views
22

file layout của tôi:dữ liệu Android ràng buộc - 'Không có định danh tài nguyên tìm thấy cho thuộc tính'

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:tools="http://schemas.android.com/tools" 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      tools:context=".MainActivity"> 

<TextView 
     android:text="@string/hello_world" 
     android:layout_width="wrap_content" 
     app:fontName="Roboto-Regular.ttf" 
     android:layout_height="wrap_content"/> 

</RelativeLayout> 

phương pháp chuyển đổi ràng buộc của tôi:

public class FontBinding { 

    @BindingAdapter("bind:fontName") 
    public static void setFontName(TextView view, @NonNull String fontName) { 
    String fontPath = "/fonts/" + fontName; 

    Typeface typeface = Typeface.createFromAsset(view.getContext().getAssets(), fontPath); 

    view.setTypeface(typeface); 
    } 
} 

Các lỗi tôi nhận được:

Error:(8) No resource identifier found for attribute 'fontName' in package 'com.example.databindingproject' 

Làm theo hướng dẫn từ https://developer.android.com/tools/data-binding/guide.html. Bất kỳ ý tưởng nào về những gì tôi có thể làm sai?

+0

bạn đang cố gắng để thêm một nguồn tài nguyên phông chữ tùy chỉnh cho ứng dụng của bạn sử dụng không? – user5292387

+0

Vị trí và cách setFontName được gọi? – Angudroid

+0

Không quan trọng ngay bây giờ nếu tôi đang thử phông chữ tùy chỉnh hay không. Chỉ muốn xác định thuộc tính tùy chỉnh thông qua cơ chế ràng buộc dữ liệu Android. @Angudroid - kiểm tra liên kết từ bài đăng - tài liệu cho biết phương thức sẽ được hệ thống gọi. –

Trả lời

39

Bạn phải sử dụng cú pháp ràng buộc dữ liệu. Nó nên là:

<TextView 
     android:text="@string/hello_world" 
     android:layout_width="wrap_content" 
     app:fontName='@{"Roboto-Regular.ttf"}' 
     android:layout_height="wrap_content"/> 
+0

Hiện tại tôi cũng gặp lỗi khác: Lỗi: (24, 21) Không có loại tài nguyên nào được chỉ định (tại 'fontName' có giá trị '@ {"Roboto- Regular.ttf "} '). Có dự án ví dụ nào (github) giới thiệu điều này không? –

+0

Dường như phương pháp BindingAdapter của bạn không được tìm thấy. Tôi không chắc tại sao lại như thế. Liệu các ràng buộc dữ liệu khác có hiệu quả với bạn? –

+0

Đúng - các biến liên kết dữ liệu hoạt động tốt. Đã thử điều này trong một dự án mới, chỉ với @BindingAdapter và nó cho cùng một lỗi. –

6

Lỗi này tương tự cũng có thể xảy ra nếu bạn quên cú đúp xoăn đóng:

android:text="@{viewModel.foo" 
Các vấn đề liên quan