2015-03-08 6 views
0

У меня есть макет с несколькими вложенными относительными макетами. Внутри вложенных макетов у меня есть элементы формы, такие как TextView s, EditText s и Button s. Код сокращается только для этого примера:Настройка макета для view.setEnabled (false) не отключает все дочерние представления

Context con; 
LinearLayout survey = new LinearLayout(); 
RelativeLayout question = new RelativeLayout(); 
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
Button btnAnswer = new Button(con); 
btnAnswer.setId(GlobalVars.getLatestId()); 
btnAnswer.addParams(params); 
question.addView(btnAnswer); 
TextView tvBtnLabel = new TextView(con); 
btnAnswer.setId(GlobalVars.getLatestId()); 
tvBtnLabel.setText("Some Label"); 

tvBtnLabel.addParams(params); 
question.addView(tvBtnLabel); 
survey.addView(question); 
question.setEnabled(false); 
//^^^^does not set child views to disabled state 

Когда я поставил всю вложенную Relative Layout к ложным, ButtonTextView и не отключены. Мне нужно войти и настроить просмотр каждого ребенка индивидуально. Ошибка в android? Существует ли максимальный предел вложения для отключения просмотров? Я проверил состояние, и относительные макеты действительно отключены.

+0

«Это не ошибка, это особенность» –

+0

@ KushtrimP. лол. Разочарование. –

ответ

1

Попробуйте это:

Context con; 
LinearLayout survey = new LinearLayout(con); 
survey.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, 
             LayoutParams.MATCH_PARENT); 

RelativeLayout question = new RelativeLayout(con); 
question.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
              LayoutParams.WRAP_CONTENT); 

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams 
       (LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

Button btnAnswer = new Button(con); 
btnAnswer.setId(GlobalVars.getLatestId()); 
btnAnswer.addParams(params); 

question.addView(btnAnswer); 
TextView tvBtnLabel = new TextView(con); 
btnAnswer.setId(GlobalVars.getLatestId()); 
tvBtnLabel.setText("Some Label"); 

tvBtnLabel.addParams(params); 
question.addView(tvBtnLabel); 
survey.addView(question); 

[UPDATE]

for (int i = 0; i < question.getChildCount(); i++) { 
    View child = question.getChildAt(i); 
    child.setEnabled(false); 
} 

Надеется, что это поможет!

+0

как это меняет то, что я делаю? –

+0

Потому что ваши коды не помещали представления в 'RelativeLayout.LayoutParams'. А также вы не «setLayoutParams» для 'survey' и' question' – Xcihnegn

+0

попробовали это, и это не сработало. –

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