안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요. 초보개발자 입니다.
밑에 질문을 남겼는데.. 내용이 부실한 것 같아서 .. 추가 해서 다시 질문 드립니다.
Preference로 메뉴를 구성중인데 Main menu는 전체 화면이 나오는데 sub menu는 전체 화면이 안나옵니다.

<그림1. Main menu> <그림2. Sub menu>
위에 그림과 같이 Main menu는 전체화면으로 잘 나옵니다. 하지만 Sub menu는 상태바가 다시 나옵니다. 이부분을 해결해야 하는데 어렵네요 ㅠ
현재 메뉴 구성은 Main menu와 Sub menu 로 구성되어 있고, source는 <PreferenceScreen ... /> 으로 되어있고,
source 구성은 setting.xml(Preference), PreferenceTest.java, AndroidManifest.xml, styles.xml 으로 구현되어 있습니다.
setting.xml>
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:key="wifi enabled"
android:title="WiFi"
android:summary="Wifi 상태 체크"/>
<PreferenceCategory android:title="Wifi setting" >
<PreferenceScreen
android:key="second_preferencescreen"
android:title="WiFi settings"
android:summary="서브 메뉴로 들어가기">
<CheckBoxPreference
android:key="prefer wifi"
android:title="Prefer WiFi"
android:summary="서브 메뉴의 선택화면" />
</PreferenceScreen>
</PreferenceCategory>
<PreferenceCategory android:title="4G setting" >
<PreferenceScreen
android:key="third_preferencescreen"
android:title="4G settings"
android:summary="서브 메뉴로 들어가기">
<CheckBoxPreference
android:key="prefer 4G"
android:title="Prefer 4G"
android:summary="서브 메뉴의 선택화면"/>
</PreferenceScreen>
</PreferenceCategory>
</PreferenceScreen>
PreferenceTest.java>
public class PreferenceTestActivity extends PreferenceActivity {
private static final String WIFI_ENABLED = "wifi enabled";
private static final boolean WIFI_VALUE = true;
private static final String PREFER_WIFI = "prefer wifi";
private static final boolean PREFER_VALUE = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
}
public static boolean getWifi(Context context){
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(WIFI_ENABLED, WIFI_VALUE);
}
public static boolean getPrefer(Context context){
return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(PREFER_WIFI, PREFER_VALUE);
}
}
AndroidManifest.xml >
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.preference"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/testTheme" >
<activity
android:name=".PreferenceTestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
styles.xml>
<resources>
<style name="testTheme" parent="@android:style/Theme">
<item name="android:windowFullscreen">true</item> //전체화면 item
<item name="android:windowContentOverlay">@null</item>
</style>
</resources>
이렇게 source를 구현 했습니다. (test source 이기에 다 구현한 것은 아닙니다.)
style.xml 에서 <item name="android:windowFullscreen">true</item> 이 item을 넣어준다음에
AndroidManifest에 theme로 적용을 해주면 main menu는전체화면이 적용이 되어집니다.
하지만 sub menu는 다시 상태바가 나옵니다. 구글링을 해봐도 .. 해결 방법을 못찾고 있습니다.
고수님들 많은 도움 부탁드립니다.
아 그리고, 마지막으로 추가 질문 하나만 더 하겠습니다. preference로 구현한 메뉴에도 배경화면을 넣을 수 있나요?




안드로이드 버그입니다. 내부 PreferenceScreen에는 테마 적용 안됩니다. 따라서 내부 프레퍼런스를 액티비티로 따로 분리해 내시기 바랍니다.