私は小さな理解の問題があります。私は独自のビューを実装しようとしているので、Snake-Exampleを自己実装しようとしました。 SnakeViewは、タイルベースのビューであり、特定の座標に単純な正方形のビットマップ(ドロアブル)をロードするTileViewから継承します。Androidは独自のビューとフィールドを作成します
さて、私は今、「attrs.xml」の必要性を理解していない:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="TileView">
<attr name="tileSize" format="integer" />
</declare-styleable>
</resources>
を私は右、TileViewで使用ある整数型のタイルサイズ自分属性を定義し?
<net.xyz.android.snake.SnakeView
android:id="@+id/snakeView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tileSize="50" />
そして今、混乱側面:この属性は、同様layoutfileで見つけることができます私の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();
}
...レイアウトファイル、右?しかし、私のコンストラクタで2番目のパラメータ(デフォルト値)を変更した場合にのみ、サイズが変更されます。通常の方法では、レイアウトを使用してもtileSizeは変更されません。
layout-valueがこのコンストラクタの呼び出しにリンクされていないと仮定します。
ご存知ですか?
ありがとうございました!