Форум программистов, компьютерный форум CyberForum.ru

Почему .setBackground не работает? - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
22.03.2013, 22:46     Почему .setBackground не работает? #1
У меня кнопки представляют собой TextView'ы, на которых по умолчанию выставлены соотв. рисунки, но при попытке изменить их(на любые) при нажатии, путем:
t0.setBackground(getResources().getDrawable(R.drawable.b0_1));
не происходит ничего. Помогите.

Добавлено через 41 минуту
А если написать вот так:
Java
1
2
3
                    t0.setVisibility(ImageButton.INVISIBLE);
                    Thread.sleep(1500);
                    t0.setVisibility(ImageButton.VISIBLE);
то кнопка не исчезает, по крайней мере на эмуляторе
(Листенер настроен правильно)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2013, 22:46     Почему .setBackground не работает?
Посмотрите здесь:

Android RSS-читалка - работает на эмуляторе, не работает на реальном девайсе
Android Почему не работает setTop()
Почему WebView не работает Android
Android Почему здесь не работает Intent?
Android Почему в EditText не работает html тэг <strike>?
Считывания ресурсов методом setBackground Android
Почему работает? Android
Android Почему оператор сравнения не работает?
Стандартная функция delete в Eclipse работает а в AndroidStudio не работает Android
Android Socket.io (прослушивание события работает на Desktop и не работает на Android)
Android Почему не работает GET запрос?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
c4sp3r
0x5B4C322291BD52AE
 Аватар для c4sp3r
91 / 91 / 5
Регистрация: 04.03.2013
Сообщений: 295
23.03.2013, 02:51     Почему .setBackground не работает? #2
Цитата Сообщение от MegaSinner Посмотреть сообщение
то кнопка не исчезает, по крайней мере на эмуляторе
А она и не будет исчезать в данном случае, так как setVisibility не моментально отрабатывает оно помещается в очередь сообщений а вот Thread.sleep(1500); выполниться сразу и основной поток будет ждать 1500 мс. а только потом начнет выполняться очередь сообщений.
lifestyle
Mobile Developer
 Аватар для lifestyle
230 / 226 / 4
Регистрация: 10.05.2009
Сообщений: 917
23.03.2013, 21:39     Почему .setBackground не работает? #3
И зачем использовать TextView в качестве кнопки с рисунком - если для этого есть ImageButton
Хотелось бы увидеть код переключения фонового рисунка и листенера....

Вот это должно работать:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private int x=0;
    
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        tv = (TextView)findViewById(R.id.textView1);
        
        tv.setBackground(getResources().getDrawable(R.drawable.ic_launcher));
        
        tv.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View view) {
                if(x % 2 == 0)
                    view.setBackground(getResources().getDrawable(android.R.drawable.btn_star_big_off));
                else
                    view.setBackground(getResources().getDrawable(android.R.drawable.btn_star_big_on));
                x++;
            }
        });
}
MegaSinner
 Аватар для MegaSinner
91 / 91 / 3
Регистрация: 09.04.2010
Сообщений: 746
24.03.2013, 23:31  [ТС]     Почему .setBackground не работает? #4
Цитата Сообщение от lifestyle Посмотреть сообщение
И зачем использовать TextView в качестве кнопки с рисунком - если для этого есть ImageButton
Хотелось бы увидеть код переключения фонового рисунка и листенера....

Вот это должно работать:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private int x=0;
    
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        tv = (TextView)findViewById(R.id.textView1);
        
        tv.setBackground(getResources().getDrawable(R.drawable.ic_launcher));
        
        tv.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View view) {
                if(x % 2 == 0)
                    view.setBackground(getResources().getDrawable(android.R.drawable.btn_star_big_off));
                else
                    view.setBackground(getResources().getDrawable(android.R.drawable.btn_star_big_on));
                x++;
            }
        });
}
- не катит, потому что оно будет работать как PushButton..

Добавлено через 9 часов 33 минуты
В общем надо вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        GetScreenSize();
        setContentView(R.layout.simulate);
        final TextView b1 = (TextView)findViewById(R.id.b1);
        b1.setOnTouchListener(new View.OnTouchListener() {
 
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                int action = event.getAction();
                if (action == MotionEvent.ACTION_DOWN) {
                    b1.setBackground(getResources().getDrawable(R.drawable.b1_1));
                }
                if (action == MotionEvent.ACTION_UP) {
                    b1.setBackground(getResources().getDrawable(R.drawable.b1));  }
                return true;
            }
        });}
Проблема решена, всем спасибо
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
25.03.2013, 13:02     Почему .setBackground не работает? #5
омг, стейт лист вам помощь, не пишите так больше.
Yandex
Объявления
25.03.2013, 13:02     Почему .setBackground не работает?
Ответ Создать тему
Опции темы

Текущее время: 21:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru