6

私はカスタムビュー(つまりのViewGroup拡張)を持っていると私はattrs.xmlで定義されたいくつかのカスタム属性を指定している....Androidのカスタムレイアウト属性の「参照属性」形式ですか?

<declare-styleable name="datascope"> 
    <attr name="colcount" format="integer" /> 
    <attr name="titleheaderrows" format="integer" /> 
    <attr name="colheaderrows" format="integer" /> 
    <attr name="rowlayout" format="reference" /> 
</declare-styleable> 

私がピックアップ罰金をすることができますが、最後の1の整数 - rowlayout - 私は、必要に応じて膨らませる予定のレイアウトファイルを参照したい。しかし、私は、メインレイアウトファイルでrowlayout属性を表現する正しい方法を見つけることができません。

lui:rowlayout="@layout/sensorvaluesdata"> 

が、これは、実行時に失敗します: は、私が試してみました

E/AndroidRuntime(22092):java.lang.NumberFormatException:「の解像度/レイアウト/ sensorvaluesdataを解析することができませんでしによって引き起こされます。整数

lui:rowlayout="?layout/sensorvaluesdata" 

WHIとしてXML」 chが

E/AndroidRuntime(22341)の失敗:java.lang.NumberFormatException:によって引き起こさ '?2130903043' を、立ち往生しているようだcosを」面白いです整数

として解析することができませんリソースIDが表示されますが、前面には?が貼り付けられています。

私のR.javaファイルには、sensorvaluesdataの賢明な見通し線があります。

public static final class layout { 

    public static final int sensorvaluesdata=0x7f030003; 

} 

これは正しい方法ですか?

(私はハードJavaソースに情報をコーディングすることができ、それが正常に動作します....

View vx = li.inflate(R.layout.sensorvaluesdata, this, false); 
+3

まあ、これは奇妙ですが、ちょうど今それを再びすべての作品を、これを試してみました OK。私は戻ってチェックして、それはすべて同じに見え、私は元の投稿の前にこれを介して作業中に何度もプロジェクトをきれいにした。 私は、Eclipseに揺らめく瞬間があったと仮定することができます - 感謝の日食/) – pootle

答えて

5

ただ、他の誰かのためにもう少し背景を追加します。コードの使用では、この

のようなものXML属性で
LinearLayout ViewContainer=(LinearLayout) (LayoutInflater.from(context)).inflate(
    attributes.getResourceId(
     R.styleable.[styleableName]_[attributeName], 
     R.layout.[defaultValue]), 
    null); 

あなたの下styleable名...

<attr name="layout" format="reference"/> 
関連する問題