设置自定义Android中
问题描述:
编程属性
我有以下的自定义属性:设置自定义Android中
<declare-styleable name="BoxGridLayout">
<attr name="numColumns" format="integer" />
<attr name="numRows" format="integer" />
<attr name="separatorWidth" format="dimension" />
<attr name="separatorColor" format="color" />
<attr name="equalSpacing" format="boolean" />
</declare-styleable>
在自定义视图我们可以得到自定义属性如下:
TypedArray a = context.getTheme().obtainStyledAttributes(attrs,
R.styleable.BoxGridLayout,
0,
defStyleAttr);
try {
mStrokeWidth = a.getDimensionPixelSize(R.styleable.BoxGridLayout_separatorWidth, DEFAULT_STROKE_WIDTH);
mStrokeColor = a.getColor(R.styleable.BoxGridLayout_separatorColor, DEFAULT_COLOR);
mColumnCount = a.getInteger(R.styleable.BoxGridLayout_numColumns, DEFAULT_COLUMN_COUNT);
mRowCount = a.getInteger(R.styleable.BoxGridLayout_numRows, DEFAULT_ROW_COUNT);
mEqualSpacing = a.getBoolean(R.styleable.BoxGridLayout_equalSpacing, DEFAULT_EQUAL_SPACING);
} finally {
a.recycle();
}
,我们需要把它们设置在XML视图layout:
<com.github.ali.android.client.customview.view.PadLayout
android:id="@+id/padLayout"
style="@style/PadLayoutStyle"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1"
custom:numColumns="3"
custom:numRows="4"
custom:separatorColor="@color/dialer_theme_color"
custom:separatorWidth="1dp">
我们如何在java代码中以编程方式设置这些自定义属性,而不是通过cu stom namespace in xml?
答
您可以使用LayoutParams.For例如:
LinearLayout parent=new LinearLayout(this);
View child=new View(this);
float density =getResources().getDisplayMetrics().density;
LinearLayout.LayoutParams lllp=new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
lllp.setMargins((int) (10*density), (int) (10*density), (int) (10*density), (int) (10*density));
lllp.gravity=Gravity.CENTER;
child.setPadding((int) (10*density), (int) (10*density), (int) (10*density), (int) (10*density));
child.setLayoutParams(lllp);
parent.addView(child);
正在添加二传手到'PadLayout'不是一种选择?这就是通常所做的。 –
?你的PadLayout是一个自定义视图,所以你需要在你的课堂上有这些特性。 – king