Есть ли способ отключить все элементы в определенном макете программно?

У меня есть игра, в которую я недавно добавил глобальную функцию рекордов, которая расстроила многих людей, поэтому я хочу добавить опцию ее отключения. То, что я сделал, было так: в моем окне просмотра настроек я добавил следующее:

<!-- High Score Tracking -->
 <LinearLayout android:layout_weight="40"
  android:layout_width="fill_parent" android:layout_height="wrap_content"
  android:orientation="vertical" android:padding="5dip">
  <LinearLayout android:layout_width="fill_parent"
   android:layout_height="wrap_content">
   <CheckBox android:text="@string/EnableHighscoreCBText"
    android:id="@+id/EnableHighscoreCB" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
   </CheckBox>
  </LinearLayout>
  <!-- High score specific settings -->
  <LinearLayout android:layout_width="fill_parent"
   android:layout_height="wrap_content" android:orientation="horizontal"
   android:weightSum="100" android:padding="5dip">
   <CheckBox android:text="@string/EnableShareScoresCBText"
    android:id="@+id/EnableShareScoresCB" android:layout_width="fill_parent"
    android:layout_height="wrap_content">
   </CheckBox>

   <TextView android:id="@+id/DefaultPlayerNameTv"
    android:layout_width="wrap_content" android:layout_weight="30"
    android:layout_height="wrap_content" android:text="@string/pDefName"
    android:textSize="18sp">
   </TextView>
   <EditText android:id="@+id/PlayerNameEt"
    android:layout_width="wrap_content" android:layout_height="wrap_content"
    android:text="@string/pNameDefVal" android:layout_weight="70"
    android:textSize="18sp" android:maxLength="20">
   </EditText>
  </LinearLayout>
 </LinearLayout>

Что я хочу сделать, так это отключить весь макет «Настройки, относящиеся к высокой оценке», когда пользователь снимает флажок «Включить отслеживание высокой оценки». Я попытался отключить его, установивsetEnabled ложно, но это не сработало вообще. Должен ли я использовать viewgroup или что-то? Есть ли метод обновления, который я должен запустить, чтобы применить изменения?

 Cheryl Simon29 сент. 2010 г., 02:45
На какой вид вы установили setEnabled? Какой эффект вы ищете? Если вы просто хотите скрыть весь раздел, вы можете установить visibility = GONE в linearLayout.
 ekatz29 сент. 2010 г., 07:45
Я не хочу скрывать это, я хочу, чтобы это было показано, но как отключено (чтобы люди знали, что это там, но увидели, что они не могли изменить его)

Ответы на вопрос(3)

затем передайте View, который вы хотите отключить, в следующую функцию ...

private void enableDisableView(View view, boolean enabled) {
    view.setEnabled(enabled);

    if ( view instanceof ViewGroup ) {
        ViewGroup group = (ViewGroup)view;

        for ( int idx = 0 ; idx < group.getChildCount() ; idx++ ) {
            enableDisableView(group.getChildAt(idx), enabled);
        }
    }
}
 Parag Chauhan15 мар. 2012 г., 09:27
+100 .... Хорошее решение, чувак
 Sruit A.Suk14 авг. 2012 г., 17:59
Спасибо, очень полезно
 Adnan Abdollah Zaki02 июл. 2015 г., 14:18
+1000 это действительно работа найти со всеми макетами, такими как просмотр списка. ты сэкономишь мое время
 mAndroid19 окт. 2011 г., 04:14
+1 Отличный ответ
 PureSpider08 окт. 2013 г., 21:28
Умное использование рекурсии!
Решение Вопроса

правильный способ сделать это - использовать предпочтения ... Я читаю об этом сейчас, но я думаю, что это то, что людям следует использовать, если они пытаются реализовать что-то подобное, перейдите по следующим ссылкам для получения дополнительной информации по этому вопросу:

http://android-journey.blogspot.com/2010/01/for-almost-any-application-we-need-to.html и developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/MyPreference.html developer.android.com/reference/android/preference/Preference.html

visiblity параметр для макета черезsetVisibility (), Вы можете переключить его между тремя значениями:visible, invisible а такжеgone (увидетьдокументация).

Я думаю, что в вашем случае наиболее разумным было бы переключаться междуvisible а такжеgone.

Ваш ответ на вопрос