2013-11-08 4 views
0

Я хочу добавить слушателя к кнопке, которая изменит положение этой кнопки. Я попытался решить проблему с помощью этого фрагмента, но не работает так, как я ожидал.Android: кнопка перехода не работает?

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int top = button.getTop(); 
      button.setTop(top + 40); 
     } 
    }); 

Этот код просто перемещает верх, а не всю кнопку. Действительно, после действия click, кнопка становится высотой jsut несколько точек, и я не вижу ярлыка. Что не так?

Если это может помочь нам лучше понять мою проблему, я покажу вам другой метод:

private void addButton(String text) { 
    FrameLayout.LayoutParams layoutParams; 
    layoutParams = new FrameLayout.LayoutParams(
      width, 
      lineHeightButton 
    ); 
    layoutParams.leftMargin = leftMargin; 
    layoutParams.topMargin = getNewTop(lineHeightButton); 

    final Button button = new Button(_mainActivity); 
    button.setText(text); 
    button.setLayoutParams(layoutParams); 

    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      int top = button.getTop(); 
      button.setTop(top + 40); 
     } 
    }); 

    _frameLayout.addView(button); 
} 

Исправлено:

button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FrameLayout.LayoutParams layoutParams; 
      layoutParams = new FrameLayout.LayoutParams(
        button.getWidth(), 
        button.getHeight() 
      ); 
      layoutParams.leftMargin = leftMargin; 
      layoutParams.topMargin = button.getTop() + 40; 
      button.setLayoutParams(layoutParams); 
     } 
    }); 

ответ

1

Я думаю, ваша проблема в setTop методе. Если вы хотите изменить свою позицию кнопки вам необходимо:

1) получить ток LayoutParams из Button

2) установить значение позиции, что вы хотите.

3) вернуться к возврату Layout Params из Button.

На самом деле вы хотите переместить, но вы просто установите верхнюю границу кнопки, а не позицию.

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