2011-07-04 67 views
3

我從TableLayout派生的cusom視圖,我需要聲明String屬性名稱,像這樣:添加自定義字符串屬性在我定製的Android瀏覽

<com.mycompany.controls.NavigationControllerView 
xmlns:app="http://schemas.usetech.com/apk/res/onroad" 
title="@string/nav_title" 
... 
/> 

(能夠指定通過資源的參考值) 。 我指定這個屬性在值/ attrs.xml:

<declare-styleable name="NavigationControllerView"> 
    <attr name="title" format="string"/> 
    ... 
</declare-styleable> 

在我的代碼我想:

public class NavigationControllerView extends TableLayout { 
public NavigationControllerView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    View.inflate(getContext(), R.layout.inc_header, this); 
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.NavigationControllerView); 
    CharSequence title = a.getString(R.styleable.NavigationControllerView_title); 
    if (title != null) 
     setTitle(title.toString()); 
} 
... 

,但沒有運氣,冠軍永遠是零。你看到我錯了嗎?

回答

1

您應該使用

<com.mycompany.controls.NavigationControllerView 
    xmlns:app="http://schemas.android.com/apk/res/onroad" 
    app:title="@string/nav_title" 
... /> 

不要錯過應用:前綴。 也應該使用正確的命名空間uri。

+0

上升,你是對的,但即使使用應用程序前綴標題爲空,既不指定資源引用既不提供直接字符串值 – ZlobnyiSerg

+0

也許你正在使用自定義命名空間?我使用xmlns:app =「http://schemas.android.com/apk/res/'packagepath'」其中'packagepath' - 根包路徑 – woodshy

+0

對!謝謝,模式真的應該在表格中:http://schemas.android.com/apk/res/com.mycompany.myapp 請在您的答案中修復xmlns:app,並將其標記爲正確 – ZlobnyiSerg