OnClick изменить цвет фона таблицы - PullRequest
3 голосов
/ 10 декабря 2010

Поэтому я пытаюсь найти простой способ заставить цвет фона или строку таблицы изменить при нажатии на нее.Я пытался найти способ назвать цвет фона и проверить его, но я не нашел способа назвать цвет.Вот что у меня сейчас.

    RowName = (TableRow) findViewById(R.id.RowName); 
    RowName.setBackgroundColor(Color.TRANSPARENT);

    RowName.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            if (RowName.equals(Color.TRANSPARENT))
            RowName.setBackgroundColor(Color.YELLOW);

            else if (RowName.equals(Color.YELLOW))
            RowName.setBackgroundColor(Color.TRANSPARENT);
        }
    });

Я знаю, что это неправильно.Надеюсь, вы увидите, чего я пытаюсь достичь.Если нет, то я хочу, чтобы начало строки таблицы было прозрачным.Когда кто-то нажимает на строку таблицы, я хочу изменить ее на желтый.Затем, если они щелкают его снова, я хочу, чтобы он снова стал прозрачным.Благодарю.

Ответы [ 2 ]

8 голосов
/ 10 декабря 2010

Вам необходимо установить цвет фона строки для отображения списка состояний (который обрабатывает выбор, нажатие, активен, неактивен).

http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

XML должен выглядеть примерно так:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--  Active state -->
    <item android:state_selected="true" android:state_focused="false"
        android:state_pressed="false" android:drawable="@android:color/transparent" />
    <!--  Inactive state-->
    <item android:state_selected="false" android:state_focused="false"
        android:state_pressed="false" android:drawable="@android:color/transparent" />
    <!--  Pressed state-->
    <item android:state_pressed="true" android:drawable="@android:color/yellow" />
    <!--  Selected state (using d-pad) -->
    <item android:state_focused="true" android:state_selected="true"
        android:state_pressed="false" android:drawable="@android:color/yellow" />
</selector>
2 голосов
/ 23 января 2011

Итак, вот что получилось.Убедитесь, что у вас есть имя TableRows.Перед созданием у меня есть

private TableRow RowName;

У меня также есть

int state = 0;

.Затем я добавляю код

public void RowName(View view) {
  switch (state) {
  case 0:
      RowName.setBackgroundColor(Color.YELLOW);
      state = 1;
      break;
  case 1:
      RowName.setBackgroundColor(Color.TRANSPARENT);
      state = 0;
      break;
  }
}

Чтобы заставить его работать, перейдите в ваш xml и в свойстве OnClick добавьте RowName или имя публичного void, с которым вы работаете.Наслаждайтесь.

...