2017-01-19 2 views
0

Я хочу переместить кнопку из верхнего угла в нижний правый угол (от одного макета к другому), переход работает отлично, когда я использую только один макет, то есть относительный макет , Логика такова: когда я нажимаю на верхний линейный макет, кнопка должна перейти на 2-ю (нижнюю) линейную компоновку. Но я перед этой ошибки:Исключение класса cast, проблема с анимацией кнопки с одного макета на другой

java.lang.ClassCastException: android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams 

мой Java-код:

private void MoveBTN() { 
//transition 
TransitionManager.beginDelayedTransition(myLayout); 
// View myBtn=findViewById(R.id.btn1); 
//moveing button 
RelativeLayout.LayoutParams LP=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
LP.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM,RelativeLayout.TRUE); 
LP.addRule(RelativeLayout.ALIGN_PARENT_RIGHT,RelativeLayout.TRUE); 
myButton1.setLayoutParams(LP); 
//resizing button 
ViewGroup.LayoutParams size=myButton1.getLayoutParams(); 
size.height=71; 
size.width=65; 
myButton1.setLayoutParams(size); 
} 

мой макет дается в картине my Layout

+0

невозможно перемещать объект viewItem из одного вида в другой. Вы можете переместить это в том же виде –

+0

, так что делать, если он должен переместиться с одного макета на другой? есть ли какой-нибудь другой метод ??? –

+0

создать два вида и сделать один видимый и невидимый друг, когда требуется –

ответ

1

Ваша кнопка находится внутри LinearLayout. Так что литье RealativeLAyout.Params будет генерировать исключение. Попробуйте изменить параметры макета не на кнопку, но макет находится в

+0

я попытался это LinearLayout.LayoutParams LP = новые LinearLayout.LayoutParams ( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); , но теперь компилятор не дает мне возможность добавлять правила, а также как компилятор узнает, с какими параметрами линейного макета я использую? потому что здесь у меня два линейных макета. –

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