2010-09-29 3 views
3

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

<!-- 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 значение false, но это совсем не сработало. Должен ли я использовать группу просмотра или что-то в этом роде? Есть ли способ обновления, который я должен запустить, чтобы применить изменение?

+1

Какой вид вы установили setEnabled on? Какой эффект вы ищете? Если вы просто хотите скрыть весь раздел, вы можете установить видимость = GONE на linearLayout. –

+0

Я не хочу скрывать это, я хочу, чтобы это было показано, но как отключено (чтобы люди знали, что это есть, но увидите, что они не могут его изменить) – ekatz

ответ

0

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

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

0

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

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

32

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

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); 
     } 
    } 
} 
+0

+1 Отличный ответ – mAndroid

+0

+100 .... Nice Решение Dude –

+0

Спасибо, очень полезно –

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