2015-02-20 7 views
0

Я только что создал ScrollView, у которого есть LinearLayout внутри. У этого LinearLayout есть кнопка сверху, и я ничего не могу сделать. Кнопка onClickListener не вызывается.Кнопка, не вызывающая OnClickListener

Я хочу определить, когда пользователь нажимает LinearLayout и при нажатии кнопки.

Вот мой код:

LinearLayout layout = new LinearLayout(this); 
    layout.setOrientation(LinearLayout.VERTICAL); 
    scrollView.addView(layout); 
    layout.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      layoutClick(v); 
     } 
    }); 

    LinearLayout.LayoutParams headerParam = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT,getDpFromPixel(50)); 

    //bottone per l'header 
    Button headerButton = new Button(this); 
    headerButton.setId(findId()); 
    headerButton.setLayoutParams(headerParam); 
    //headerButton.setBackground(getResources().getColor(R.color.button_backgroud)); 
    //headerButton.setBackground(getResources().getColor(R.color.button_backgroud)); 
    Drawable d = getResources().getDrawable(R.color.button_backgroud); 
    headerButton.setBackground(d); 
    headerButton.setText(title); 
    headerButton.setTextColor(getResources().getColor(R.color.white)); 
    headerButton.setGravity(Gravity.CENTER_VERTICAL); 
    headerButton.setPadding(70, 0, 0, 0); 
    headerButton.setTextAlignment(View.TEXT_ALIGNMENT_TEXT_START); 
    headerButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      buttonPressed(v); 
      System.out.println("button pressed!!"); 
     } 
    }); 
    layout.addView(headerButton); 

Функция «layoutClick» работает, headerButton никогда не вызов функции «buttonPressed» или печать на консоль ..

+1

Нет необходимости, XML пуст (есть только родительский LinearLayout), everithing создается кодом. – Benetz

+1

В порядке, где вы добавили 'headerButton'? – Elltz

+0

Вы пытались использовать метод '.setClickable();'? – freddiev4

ответ

0

Попробуйте сделать фокусируемый кнопку

headerButton.setFocusable(true); 
headerButton.setClickable(true); 
+0

Кнопка не запрашивает фокус, и она запускает событие onclick, поэтому зачем это нужно или нужно. – Elltz

+0

Я пробовал, ничего не изменилось. И почему мне нужно указать свойство clickable? По умолчанию false? – Benetz