我需要创建一个自定义按钮并以编程方式添加它 我已经找到了一些我尝试过的例子,但是当我将它添加到我的Activity中时,我看不到任何东西。
这是我的代码:
活动:
Button btn = new Button(Einstellungen.this, null, R.attr.CustomButton);
在attrs.xml中:
<resources>
<attr name="CustomButton" format="reference"/>
在styles.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>
当我启动我的应用程序时,没有按钮 我该如何解决这个问题?
答案 0 :(得分:0)
您还应该定义按钮的布局参数(如果未在样式中定义),并将按钮放入活动的布局中。假设您LinearLayout
的ID为activity_layout
,那么它可能是这样的:
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
。来自docs:
fill_parent
表示视图希望与其父级一样大,减去父级的填充(如果有的话)。此值已从API级别8及之后弃用,并替换为match_parent
。
答案 1 :(得分:0)
您需要在声明按钮后执行此操作:
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