TextView的style.xml中文本对齐的值

时间:2019-04-17 12:23:30

标签: android android-layout

我尝试以编程方式创建一组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>

3 个答案:

答案 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,希望它能起作用!