Что такое «способ Android» для динамического создания видов со специальными стилями / свойствами? - PullRequest
0 голосов
/ 27 декабря 2011

Как уже упоминалось в теме, у меня есть несколько просмотров, например, TableRow с всегда одним и тем же фоном, используемым в качестве темы, или специальный TableRow, содержащий TextView с некоторыми специальными стилями / свойствами. Эти представления устанавливаются динамически, поэтому для этого проблематично использовать XML. Поскольку я читаю, невозможно также установить стили программно. Так, каков лучший способ решить это?

Возможность 1:
Я использую и производные от экземпляра представления, как это:

public class TopicTableRow extends TableRow {

    public TopicTableRow(Context context) {
        super(context);

        setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        setBackgroundColor(Color.parseColor("#777777"));
        setClickable(false);
    }
} 

Возможность 2:
Я мог бы создать действительный шаблон XML со специальным макетом, который я никогда не использую в приложении, содержащий необходимые представления, которые уже имеют все назначенные стили. После этого я получаю доступ к нужным представлениям R.id ....
Но этот метод кажется мне очень дилетантом.

Я не думаю, что эти две возможности являются «настоящим» способом Android сделать это, так как это обычно делается?

1 Ответ

0 голосов
/ 27 декабря 2011

Если вы хотите установить определенные стили для групп элементов, вы можете использовать темы и концепции стилей в Android.

Вы можете прочитать о них здесь: http://developer.android.com/guide/topics/ui/themes.html

Невозможно программно изменить атрибут стиля представления.

Таким образом, Android-способ, вероятно, состоит в том, чтобы создать необходимые представления в XML и использовать LayoutInflater, чтобы получить «Java-версию» представления XML. Это позволяет вам повторно использовать компонент и заполнять его соответствующими данными для любого количества строк.

Вид кнопки = (кнопка) LayoutInflater.from (this) .inflate (R.layout.textViewFromWeb, null);

Надеюсь, это пригодится вам!

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