gpt4 book ai didi

android - 以编程方式创建 FloatingActionButton(无 xml)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:57:40 24 4
gpt4 key购买 nike

我很欣赏 Android 的 FloatingActionButton (fab) 功能,并希望在我的项目中的许多不同地方使用它们。

现在,我有这样的东西,我有几个 xml 规范,除了 id、icon 和 onclick 之外,它们都是相同的。

<android.support.design.widget.FloatingActionButton
android:id="@+id/fabFoo"
android:onClick="onFabFoo"
android:src="@drawable/ic_foo"
app:backgroundTint="?attr/colorButtonNormal"
app2:elevation="2dp"
app:fabSize="mini"
android:focusable="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_margin="2dp"
app:rippleColor="?attr/colorSwitchThumbNormal" />

为了避免重复代码...有没有办法完全以编程方式创建 fab 而无需在 xml 中指定它?

...

尝试一些建议...在我将 SDK 升级到当前 (# 25) 之前没有“setSize”

FloatingActionButton fab = new FloatingActionButton(this);
fab.setId(View.generateViewId());
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("DEBUG", "onFabFoo");
}
});
fab.setImageResource(R.drawable.ic_foo);
fab.setElevation(2);
fab.setSize(android.support.design.widget.FloatingActionButton.SIZE_MINI);
fab.setFocusable(true);
RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
lay.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lay.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
lay.setMargins(2,2,2,2);
fab.setLayoutParams(lay);

还没想好怎么设置颜色

//  app:backgroundTint="?attr/colorButtonNormal"
// app:rippleColor="?attr/colorSwitchThumbNormal"

我看到有设置这些的方法(setBackgroundTintList 和 setRippleColor),但我不知道如何将它设置为我在原始 xml 设置中选择的颜色(colorButtonNormal 和 colorSwitchThumbNormal)

另外,不知道如何将它附加到父级并让它显示...

好吧,我想我现在意识到,如果您以编程方式执行所有这些操作,那么您将无法使用 Android Studio 中的 xml 设计 View 等功能。因此,与之合作要困难得多。

最佳答案

我能想到的有两个

仅使用 java

创建一个 FloatingActionButton直接在代码中,如

public FloatingActionButton getFab(Context context) {
FloatingActionButton fab = new FloatingActionButton(context);
...
return fab;
}

膨胀布局

public FloatingActionButton getFab(Context context, ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(context);
return (FloatingActionButton) inflater.inflate(R.layout.myfab, parent, false);
}

更多关于 inflater

编辑:

您可以使用 setBackgroundTintListsetRippleColor设置 2 个属性。

并把它附加到你做的 parent 身上

layout.addView(v);

但我觉得使用 LayoutInflater 更好,因为它同时完成了生成 FloatingActionButton 并将其附加到其父项的任务。

inflater.inflate(R.layout.myfab, layout, true)

关于android - 以编程方式创建 FloatingActionButton(无 xml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42634094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com