我尝试以编程方式创建一组TextView,但希望通过xml样式自定义每个TextView。我创建TextView实例并将其放入LinearLayout中。 在我的style.xml脚本中,我添加了文本大小和颜色的自定义值,并且一切正常。 但是我无法将styles.xml文件的文本对齐方式设置为居中。
这是我的Java代码段:
import android.view.View;
public class GramophoneForm extends AppCompatActivity
{
private LinearLayout m_button_container = null;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
....
....
m_button_container = this.findViewById(R.id.gr_view_container);
List<? extends Object> ct_list = getClassificationTypes();
setObjectsList(ct_list);
}
public void setObjectsList(List<? extends Object> objects)
{
m_button_container.removeAllViews();
for(Object o : objects)
{
TextView item = new TextView(this);
item.setTextAppearance(this, R.style.selectionTextStyle);
////////////////////Is't works fine, but I want set up text alignment by xml style
item.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
////////////////////
item.setText(o.toString());
item.setTag(o);
m_button_container.addView(item);
}
}
}
我的styles.xml代码片段:
<style name="selectionTextStyle" parent="@android:style/Widget.TextView">
<item name="android:layout_width">match_parent</item>
<item name="android:textSize">25dp</item>
<item name="android:textColor">#FFFF00FF</item>
<item name="android:textStyle">bold</item>
<!-- don't work -->
<item name="android:layout_centerInParent">true</item>
<!-- don't work
<item name="android:textAlignment">4</item>
-->
<!--don't work
<item name="android:textAlignment">center</item>
-->
</style>
答案 0 :(得分:0)
针对您的问题的一种可能的解决方案是使用已应用样式的TextView创建XML布局,而不是每次都创建TextView实例,而是对布局进行充气。
XML示例,可以说它名为myTextViewLayout:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/selectionTextStyle" />
然后在for循环中对其进行充气,然后将其添加到容器中:
for(Object o : objects){
TextView item = (TextView)getLayoutInflater().inflate(R.layout.myTextViewLayout, null);
item.setText(o.toString());
item.setTag(o);
m_button_container.addView(item);
}
答案 1 :(得分:0)
您应该在xml样式中插入尺寸值:
<dimen name="buttonHeight">40px</dimen>
然后,您只需引用尺寸值。因此,在您的布局文件中,您将编写:
android:layout_height="@dimen/buttonHeight"
答案 2 :(得分:0)
将您的父级属性从parent="@android:style/Widget.TextView"
更改为android:Widget.Material.Light.TextView
,希望它能起作用!