将布局的自定义属性添加到子项



>我有布局

<android.support.v7.widget.GridLayout
android:id="@+id/grid_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/default_grid_height"
xmlns:app="http://schemas.android.com/apk/res-auto">
<!--I need add to this child attribute "app:layout_*"-->
<Button
android:text="1"
app:layout_columnSpan="2"
app:layout_columnWeight="2"
app:layout_rowWeight="3"/>
</android.support.v7.widget.GridLayout>

我需要以编程方式将子项添加到此布局容器(support.v7.widget.GridLayout)具有此布局支持的自定义属性。我该怎么做? 假设我可以做这样的事情,但没有找到这样的方法。

widget = CustomWidget(context)
widget.addParam("app:layout_rowWeight", 3) // how??

像这样为GridLayout添加一些东西并不难。但是您需要知道要添加什么。

GridLayout gv = (GridLayout) findViewById(R.id.grid_layout);
TextView tv = new TextView(context);
tv.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
tv.setText("TextView");
LayoutParams params = new LayoutParams(Set your column and row information as params);
tv.setLayoutParams(params);
gv.addView(tv);

我的建议是,我们可以让它变得非常简单, 只需在自定义类中为此创建一个方法,

如果你在XML中设置,你可以像这样调用app:layout_rowWeight这样,这样你就可以在TypedArray中获取你的自定义类。

但是对于 Jave,您可以创建一个单独的方法,并且可以实现相同的目标。

例如,检查TextView Android源代码,并搜索setTextColor方法。

最新更新