Значение для выравнивания текста в style.xml для TextView - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь создать набор TextView программно, но хочу настроить каждый TextView в стиле xml. Я создаю экземпляры 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 голосов
/ 17 апреля 2019

Вы должны вставить значение измерения в стиле xml:

<dimen name="buttonHeight">40px</dimen>

Тогда вам просто нужно сослаться на значение измерения.Итак, в вашем файле макета вы напишите:

android:layout_height="@dimen/buttonHeight"
0 голосов
/ 17 апреля 2019

измените свой родительский атрибут с этого parent="@android:style/Widget.TextView" на этот android:Widget.Material.Light.TextView надеюсь, что он будет работать!

0 голосов
/ 17 апреля 2019

Возможное решение вашей проблемы - создать макет XML с TextView с примененным к нему стилем и вместо того, чтобы каждый раз создавать экземпляр 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(Object o : objects){
    TextView item = (TextView)getLayoutInflater().inflate(R.layout.myTextViewLayout, null);          
    item.setText(o.toString());
    item.setTag(o);

    m_button_container.addView(item);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...