2014-10-29 3 views
0

Я создал пользовательский кнопочный элемент управления в андроиде с одним левым изображением, изображением правой стрелки и текстом в середине. Я хочу сделать изображение правой стрелки на стрелке вниз при нажатии на нее. Для этого я написал в пользовательской кнопке классПользовательская кнопка не работает в android

public class ButtonWithTwoImagesAndOneText extends LinearLayout{ 
private ImageView _image, _arrow; 
private TextView _text; 
private View _viewupper, _viewlower, _viewlowersmall; 

public ButtonWithTwoImagesAndOneText(Context context,AttributeSet attrs) { 
    super(context, attrs, 0); 
    Init(context); 


    RelativeLayout nameLayout= (RelativeLayout)findViewById(R.id.lytcontrollayout); 
    nameLayout.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
       _arrow.setImageDrawable(getResources().getDrawable(R.drawable.arrowdown)); 
     } 
    }); 
} 

Я использовал эту кнопку управления в макете, подобном этому.

<com.example.Controls.ButtonWithTwoImagesAndOneText 
     android:id="@+id/btnaccountsettings" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
     </com.example.Controls.ButtonWithTwoImagesAndOneText> 

и в классе этого макета я добавил кнопку click для настроек btnaccount.

btnAccountSettings.setOnClickListener(new RelativeLayout.OnClickListener() {    
     @Override 
     public void onClick(View arg0) { 
      Toast.makeText(Settings.this, "Account Settings", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

Теперь при запуске приложения происходит стрелка вниз, но тост не работает. Пожалуйста, помогите решить эту проблему.

+0

Вы можете использовать xml 'android: onClick' успешно? – Doomsknight

+0

Вы не можете зарегистрировать два onClickListener для кнопки! –

+0

попытайтесь написать this.setOnClickListener вместо nameLayout.setOnClickListener – meh

ответ

1

RelativeLayout.OnClickListener должен быть View.OnClickListener.

btnAccountSettings.setOnClickListener(new View.OnClickListener() {    
     @Override 
     public void onClick(View arg0) { 
      Toast.makeText(Settings.this, "Account Settings", Toast.LENGTH_SHORT).show(); 
     } 
    }); 
+0

Благодарим вас за такой быстрый ответ. Я сделал эту коррекцию. Стрелка вниз изображение работает нормально. Тост также показывается, но только иногда. У меня есть экран с 4 этой пользовательской кнопкой, показывающий тост с разными сообщениями. На самом деле, я хотел, чтобы этот пользовательский элемент управления использовался на разных экранах каждый раз, когда стрелка снижалась, и после этого я должен показывать разные виды. –

Смежные вопросы