如何创建自定义按钮并以编程方式添加它?



我需要创建一个自定义按钮并以编程方式添加它。
我已经找到了一些示例,我尝试了它们,但是当我将其添加到我的活动中时,我看不到任何东西。

这是我的代码:

活动:

Button btn = new Button(Einstellungen.this, null, R.attr.CustomButton);

在 attrs.xml:

<resources>
<attr name="CustomButton" format="reference"/>

在风格上.xml

<style name="AppTheme2" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="CustomButton">@style/someStyle</item>
</style>
<style name="someStyle">
<item name="android:layout_width">2px</item>
<item name="android:layout_height">fill_parent</item>
<item name="android:background">#000</item>
</style>

当我启动我的应用程序时,没有按钮。
如何解决这个问题?

您需要在声明按钮后执行此操作:

layout = (LinearLayout) findViewById(R.id.linear_layout_of_your_xml);
btn.setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
layout.addView(buyButton);

如果您的xml具有不同的布局,您甚至可以初始化并分配它而不是LinearLayout。

您还应该定义按钮的布局参数(如果未在样式中定义(,并将按钮放入活动的布局中。假设您有一个 idactivity_layoutLinearLayout,那么它可能是这样的:

LinearLayout layout = (LinearLayout) findViewById(R.id.activity_layout);
Button button = new Button(Einstellungen.this, null, R.attr.CustomButton);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
button.setLayoutParams(layoutParams);
layout.addView(button);

请注意,应使用match_parent而不是定义样式中的fill_parent。从文档中:

fill_parent意味着视图希望与其父视图一样大,减去父视图的填充(如果有(。此值从 API 级别 8 及更高版本开始已弃用,并替换为match_parent

相关内容

  • 没有找到相关文章