我在ScrollView中有一个带有多个按钮的应用程序,我在Activity开始后以编程方式添加更多按钮(自定义用户按钮)。
所有按钮都具有相同的样式和属性,但在屏幕上以编程方式创建的按钮具有稍微粗略的文本。
我在布局检查器中检查了它们,它们对getTextSize(20),getTypefaceStyle(NORMAL),height,width,styles等属性都有相同的值。
这些属性的相同值会导致大胆的不同吗?
一个XML按钮的示例:
<Button
android:id="@+id/button_autre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/background_selector2o"
android:text="Bonbons"
android:textAppearance="@style/TextAppearance.AppCompat"
android:textStyle="normal"
android:textAllCaps="false"
android:textColor="#ffffff"
android:textSize="20sp"
android:layout_marginTop="20dp"
/>
创建一个Button的示例:
LinearLayout layout = (LinearLayout) view.findViewById(R.id.buttons_container);
LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutparams.setMargins(0, px, 0, 0); // px calculated to be 20dp
ContextThemeWrapper ndfContext = new ContextThemeWrapper(getActivity(), R.style.button_style_xml);
Button addbutton = new Button(ndfContext);
addbutton.setLayoutParams(layoutparams);
addbutton.setText("Bonbons");
addbutton.setBackgroundResource(R.drawable.background_selector2o);
layout.addView(addbutton);
button_style_xml的内容:
<resources>
<style name="ndftype_style" parent="AppTheme.NoActionBar">
<item name="android:background">@drawable/background_selector2o</item>
<item name="android:textAppearance">@style/TextAppearance.AppCompat</item>
<item name="android:textColor">#ffffff</item>
<item name="android:textSize">20sp</item>
<item name="android:layout_marginTop">20dp</item>
<item name="android:textAllCaps">false</item>
<item name="android:textStyle">normal</item>
</style>
</resources>
结果:
答案 0 :(得分:0)
通常情况下,我在撰写问题时得到了一个想法,感谢Canary Effect。
尽管所有按钮都具有相同的样式,并且没有任何字体分配给它们,但似乎Android将两种不同的默认字体归因于这两种类型。我不确定为什么会这样。
添加
<item name="android:fontFamily">sans-serif</item>
在我以编程方式创建的按钮上解决了这个问题。 您可能还想将其添加到XML按钮以确保安全。
如果您的目标是API级别&lt; 16,在所有按钮上运行以下应该可以工作:
button.setTypeface(Typeface.DEFAULT);