18

ビューから、android:padding 属性の値をプログラムで取得するにはどうすればよいですか? 私は現在使用しています:

private static final String ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android";
private static final String ATTRIBUTE_PADDING = "padding";

public ActivityWrapperView(Context context, AttributeSet attrs) {
    super(context, attrs);
    int padding = attrs.getAttributeIntValue(ANDROID_NAMESPACE, ATTRIBUTE_PADDING, -1);
}

これは-1を返します。属性名として「android:padding」を使用しようとしましたが、-1が返されます。

編集:私の要件:レイアウト XML で android:padding 値が指定されている場合、ビューはこのパディングを使用します。パディングが指定されていない場合は、デフォルトのパディングが使用されます

4

3 に答える 3

6

android:paddingカスタムビューの属性に追加するだけです。

<declare-styleable name="ActivityWrapperView">
    ...
    <attr name="android:padding" />
    ...
</declare-styleable>

次に、他の属性と同じように属性にアクセスできます。

TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ActivityWrapperView);
float padding = a.getDimension(R.styleable.ActivityWrapperView_android_padding, 0);
...
boolean hasPadding = a.hasValue(R.styleable.ActivityWrapperView_android_padding);
于 2014-09-22T20:18:23.250 に答える
2

関数を見るべきですgetPadding____()

サイズ、パディング、マージン

...

その寸法を測定するために、ビューはパディングを考慮します。パディングは、ビューの左、上、右、および下の部分のピクセルで表されます。パディングを使用して、ビューのコンテンツを特定のピクセル量だけオフセットできます。たとえば、左パディングを 2 にすると、ビューのコンテンツが左端から 2 ピクセル右に押し出されます。パディングは setPadding(int, int, int, int) または setPaddingRelative(int, int, int, int) メソッドを使用して設定でき、getPaddingLeft()、getPaddingTop()、getPaddingRight()、getPaddingBottom()、getPaddingStart( )、getPaddingEnd()。

ビューはパディングを定義できますが、マージンはサポートしていません。ただし、ビュー グループはそのようなサポートを提供します。詳細については、ViewGroup および ViewGroup.MarginLayoutParams を参照してください。

于 2013-08-09T06:32:52.523 に答える