Как добавить стиль в textView и editText из моего кода? - PullRequest
1 голос
/ 17 ноября 2011

Я создаю textView и editText в коде.

           TextView textview = new TextView(getActivity());

            final EditText editText = new EditText(getActivity());
            editText.setGravity(Gravity.CENTER);

и у меня есть стиль в res / values ​​/ mystyle, когда я добавляю стиль в textView, он выглядит так:

 TextView textview = new TextView(getActivity(), null,  R.style.editTextStyle);

Но ничего не изменилось.Как добавить стиль в textView и editText из моего кода.Что я делаю не так?Спасибо за все!

1 Ответ

5 голосов
/ 18 ноября 2011

Мы не можем программно установить стили: Android установить стиль в коде . По крайней мере, пока. Информация в стиле xml должна быть перемещена и преобразована в формат xml макета.

В основном вам необходимо создать новый макет XML, который содержит только одно представление. Вот пример макета для TextView:

(layout / edit_text_style.xml в моей настройке теста)

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#000033"
    android:textColor="#00aa00"
    android:typeface="monospace"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
</TextView>


Затем TextView должен быть создан в коде Activity с использованием getLayoutInflater(). Вот пример кода:

(MainActivity.java с использованием layout / main.xml в моей тестовой настройке.)

@Override public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LinearLayout root = (LinearLayout) findViewById(R.id.root); 
    TextView test = (TextView) getLayoutInflater().inflate(R.layout.edit_text_style, null); // Magic!
    test.setText("Ah, hello World..."); // Remove this if you set text in the xml
    root.addView(test); // Bang!

В моей настройке теста также есть main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
>
    <EditText android:id="@+id/test"
        android:text="Absolutely meaningless and mostly harmless text"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
</LinearLayout>
...