android:layout_width って、型は dimension であるのに、Layout XML には、 "match_parent" とか "wrap_content" とか指定できる。これと同じことを自作ビューの自作プロパティでやりたい。

自作ビュー(カスタムビュー)の作りかたは下などを参照。

で、android:layout_width のマネをするには、 attrs.xml に以下のように書く。

```xml attrs.xml


Android Framework のソースコードにこう書いてあったので、真似しただけ。

* [GrepCode: frameworks / base / core / res / res / values / attrs.xml - Source Code View](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.3_r2.1/frameworks/base/core/res/res/values/attrs.xml)

自作ビューの実装クラスで、この値を読み込む時は、``TypedArray.getLayoutDimension`` を使う。

```java MyCustomView.java
public MyCustomView(Context context, AttributeSet attrs) {
    super(context, attrs);
    
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyCustomView, 0, 0);

    _myWidth = a.getLayoutDimension(R.styleable.MyCustomView_my_width, 
            LayoutParams.WRAP_CONTENT);
    
    a.recycle();
}

Android Framework 側で仕様が増えた時は、追従しないといかんのかー。

Android

published

Ads

Read more!

amay077

Microsoft MVP(Xamarin). フルリモートワーカー. Geospatial Mobile app developer. Love C#.

amay077 amay077