Androidの独自のビューとフィールドを作成する

私は小さな理解の問題があります。私は独自のビューを実装しようとしているので、Snake-Exampleを自己実装しようとしました。 SnakeViewは、タイルベースのビューであり、特定の座標に単純な正方形のビットマップ(ドロアブル)をロードするTileViewから継承します。

まあ、今私は "attrs.xml"の必要性を理解していません:

<?xml version="1.0" encoding="utf-8"?>


  
    
  

私は TinyView で使用されているタイプ整数の自分の属性tileSize を定義しました。この属性はレイアウトファイルにもあります:


混乱している側面:My TileViewのコンストラクタは次のとおりです。

public TileView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.TileView);
    mTileSize = a.getInt(R.styleable.TileView_tileSize, 20);
    a.recycle();

}

...レイアウトファイルのtileSizeを動的に変更する方法はありますか?しかし、私のコンストラクタで2番目のパラメータ(デフォルト値)を変更した場合にのみ、サイズが変更されます。通常の方法では、レイアウトを使用してもtileSizeは変更されません。

レイアウト値がこのコンストラクタの呼び出しにリンクされていないと仮定します。

あなたは何か考えていますか?

本当にありがとうございました!

0

1 答え

declare-styleableタグの名前とクラス名は同じでなければなりません。

レイアウトのルートタグには次の属性が必要です。

xmlns:app="http://schemas.android.com/apk/res/your_package_name"

Then you can replace tileSize="50" by app:tileSize="50"

0
追加された