기존 사용자 정의 테마를 사용하여 XML에서 활동의 제목 표시줄을 숨기는 방법
일부 활동에 대한 제목 표시줄을 숨기려고 합니다.문제는 제가 모든 활동에 스타일을 적용했기 때문에 단순히 테마를 설정할 수 없다는 것입니다.@android:style/Theme.NoTitleBar
.
제목 표시줄 테마를 내 스타일의 상위 항목으로 사용하면 모든 활동에서 제목 표시줄이 제거됩니다.
제목 없는 스타일의 아이템을 어딘가에 설정할 수 있습니까?
에서 이 작업을 수행합니다.onCreate()
방법.
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here);
this
을 .Activity
.
다음을 수정할 수 있습니다.AndroidManifest.xml
:
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
또는 사용android:theme="@android:style/Theme.Black.NoTitleBar"
전체 화면 활동이 필요하지 않은 경우.
참고: 이전에 '기본' 보기를 사용한 적이 있는 경우 부모 클래스도 다음에서 변경해야 합니다.AppCompatActivity
Activity
.
저는 이제 다음과 같이 했습니다.
저는 제 일반적인 스타일에서 모든 것을 이어받은 스타일을 선언한 다음 Bar라는 타이틀을 비활성화했습니다.
<style name="generalnotitle" parent="general">
<item name="android:windowNoTitle">true</item>
</style>
이제 이 스타일을 응용프로그램 전체 스타일을 덮어쓰고 다른 모든 스타일 정보를 상속하는 제목 표시줄을 숨기려는 모든 활동으로 설정할 수 있으므로 스타일 코드가 중복되지 않습니다.
활동에 하려면 특정활에스적용려열면기하을타동일열기▁toAndroidManifest.xml
다음 을 다음속추다니에 합니다.activity
태그, 태그,
<activity
android:theme="@style/generalnotitle">
마음에 안 들어요this.requestWindowFeature(Window.FEATURE_NO_TITLE);
제목 표시줄이 잠깐 나타났다가 사라지기 때문입니다.
저는 또한 그것을 좋아하지 않습니다.android:theme="@android:style/Theme.NoTitleBar"
새로운 기기 사용자들이 익숙해진 3.0+ 홀로 변경 사항을 모두 잃었기 때문입니다.그래서 저는 이 해결책을 발견했습니다.
res/values 폴더에서 styles.xml이라는 파일을 만듭니다(아직 존재하지 않는 경우).해당 파일에 다음 코드를 입력합니다.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Default" parent="@android:style/Theme"></style>
<style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
<style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>
다음으로 다른 styles.xml 파일로 res/values-v11을 만듭니다(다시 한 번 말하지만 이미 존재할 수도 있습니다).해당 파일에 다음 코드를 입력합니다.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
<style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
<style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>
또한 4.0+를 대상으로 하는 경우 다른 styles.xml 파일(예, 이미 있을 수 있음)을 사용하여 res/values-v14 폴더를 만듭니다.해당 파일에 다음 코드를 입력합니다.
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
<style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
<style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>
마지막으로, 이러한 파일이 모두 생성된 상태에서 AndroidManifiest.xml 파일을 열고 코드를 추가할 수 있습니다.
android:theme="@style/Theme.NoTitle"
제목을 지정하지 않을 활동의 활동 태그 또는 전체 응용프로그램에 적용할 경우 응용프로그램 태그.
이제 사용자는 원하는 화면 레이아웃과 함께 장치 버전과 연결된 테마를 얻을 수 있습니다.
을 추: 값다으로로 android:theme="@style/Theme.FullScreen"
알림 표시줄을 제거하는 것과 동시에 알림 표시줄도 제거합니다.
제목 표시줄은 개발자 Android 페이지에서 언급한 것과 같이 두 가지 방법으로 제거할 수 있습니다.
manifest.xml
파일 이름:
다을추가다합에 다음을 합니다.
application
앱의 모든 활동에 대해 제거하려는 경우:<application android:theme="@android:style/Theme.Black.NoTitleBar">
또는 특정 활동의 경우:
<activity android:theme="@android:style/Theme.Black.NoTitleBar">
정답은 Actionbar Activity를 확장하지 않고 Activity만 확장하는 것입니다.
여전히 작업 표시줄 활동을 사용하는 경우 이 작업이 작동하는 것처럼 보입니다.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
이것도 효과가 있는 것 같습니다.
styles.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
스콧 빅스가 쓴 것처럼 할 수 있습니다.이런 종류의 작품테마가 없는 경우를 제외하고는 설정 메뉴의 배경이 투명합니다.
거스름돈만
public class MainActivity extends ActionBarActivity {
활동 또는 활동 조각으로
public class MainActivity extends Activity {
하지만 저는 재료 디자인을 사용하여 충분히 좋게 만들 수 있고 액션 바를 제거하지 않을 수 있습니다: https://gist.github.com/shimondoodkin/86e56b3351b704a05e53
- 응용 프로그램 아이콘 설정
- 설계와 일치하도록 수행 표시줄의 색상을 설정합니다.
- 설정 메뉴에 아이콘 설정
- 아이콘 추가(위에 표시됨)
재료 설계 호환성 액션 바 스타일링의 예입니다.
내게 맞는 것:
1-in styles.xml:
<style name="generalnotitle" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
2- 주 활동 중
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
in 매니페스트 스타일 상속:
<activity android:name=".MainActivity" android:theme="@style/generalnotitle">
사용하는 경우this.requestWindowFeature(Window.FEATURE_NO_TITLE)
사용자는 활동이 시작될 때까지 애니메이션을 실행하는 동안 잠시 동안 제목 표시줄을 볼 수 있습니다.onCreate
사용하는 경우@android:style/Theme.Black.NoTitleBar
아래 그림과 같이 애니메이션 시작 중에는 제목 표시줄이 표시되지 않습니다.
<activity
android:name=".MainActivity"
android:label="My App"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
위의 예는 분명히 당신의 기존 응용 프로그램 테마를 재정의할 것입니다. 만약 당신이 기존 테마를 가지고 있다면, 추가합니다.<item name="android:windowNoTitle">true</item>
게하게.
내가 모든 높은 투표 답변을 사용하려고 할 때 내 앱은 항상 충돌했습니다.("@filename:style"과 관련이 있다고 생각합니다.)
저에게 가장 좋은 해결책은 다음을 사용하는 것이었습니다.
android:theme="@style/Theme.AppCompat.NoActionBar"
더 이상 머리글/제목 표시줄이 없습니다.그냥 그것을 그 안에 둬라.<application>...</application>
또는<activity>...</activity>
전체 앱 또는 특정 활동 중에서 원하는 경우(싫어하는 경우에 따라 다릅니다.
아래와 같이 테마를 만듭니다.
<!-- Variation on the Light theme that turns off the title -->
<style name="MyTheme" parent="android:style/Theme.Black">
<item name="android:windowNoTitle">true</item>
</style>
더하다
<item name="android:windowNoTitle">true</item>
AppTheme 내부(styles.xml)
그냥 사용하기getActionBar().hide();
에서.onCreate()
방법.
위해서AppCompat
다음과 같은 해결책이 저에게 효과가 있었습니다.
표이 없새 추스 타테마에 수행 이 없는 styles.xml
트세를 합니다.parent="Theme.AppCompat.NoActionBar"
.
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="android:windowBackground">@color/colorPrimary</item>
</style>
이스플시화활동테일구스현다니합을타의 스플래시 화면 .androidManifest.xml
<activity
android:name=".ActivityName"
android:theme="@style/SplashTheme"> // apply splash them here
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
결과는 다음과 같습니다.
당신은 그저 변화가 필요합니다.AppTheme
Style.xml의 스타일(정의를 바꿀 경우)DarkActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
로.NoActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
AndroidManifast.xml에 정의된 AppTheme
2020년에는 이것에 대한 답이 한 줄밖에 없다고 생각합니다.
styles.xml에 다음 행을 추가합니다.
<item name="windowNoTitle">true</item>
당신의onCreate
메서드는 다음 스니펫을 사용합니다.
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
이 코드를 Java 파일에서 사용할 수 있습니다.
보기를 설정하거나 로드하기 전에 이 줄을 추가합니다.
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
사용하는 테마에 대해 두 가지를 모두 추가합니다.
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
style.xml 파일에 이 스타일 추가
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
그런 다음 이 스타일 이름을 AndroidManifest.xml에 추가하여 아래와 같이 제목 표시줄을 보고 싶지 않은 특정 활동을 수행합니다.
<activity android:name=".youractivityname"
android:theme="@style/AppTheme.NoActionBar">
</activity>
지원 위젯 툴바 v7을 사용하고 있습니다.그래서 제목을 삭제하거나 숨길 수 있게 하려면 이 내용을 작성해야 합니다.
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);
제목과 수행 표시줄을 모두 숨기기 위해 다음 작업을 수행했습니다.
매니페스트의 활동 태그:
android:theme="@style/AppTheme.NoActionBar"
Activity.java에서 ContentView를 설정하기 전에:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
예.,
//제목 표시줄 제거
Windows Feature(윈도우 기능)를 요청합니다.FEATURE_NO_TITLE);
//알림 표시줄 제거
이 .getWindow().setFlags(윈도우즈 관리자).레이아웃 매개 변수.FLAG_FULLSCREEN, WindowManager.레이아웃 매개 변수.플래그_풀스크린);
참고: 이 줄은 다음 이전에 유지해야 합니다.setContentView
저는 더 선호합니다:-
- 앱테마(전체 앱테마)
- 앱테마.수행 표시줄 없음(수행 표시줄 또는 도구 모음이 없는 테마)
- 앱테마.수행 표시줄이 없습니다.전체 화면(수행 표시줄 및 상태 표시줄이 없는 테마)
다음과 같은 테마 스타일:
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorDarkPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.NoActionBar.FullScreen" parent="AppTheme.NoActionBar">
<item name="android:windowFullscreen">true</item>
</style>
또한 Create 메서드에서 super.on(저장된 인스턴스 상태) 뒤에 아래 코드를 놓습니다.
super.onCreate(savedInstanceState)
this.window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN)
또는 제목 표시줄을 숨기거나 표시하려는 경우:
private void toggleFullscreen(boolean fullscreen)
{
WindowManager.LayoutParams attrs = getWindow().getAttributes();
if (fullscreen)
{
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
}
else
{
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
}
getWindow().setAttributes(attrs);
}
제 경우, 안드로이드 스튜디오 2.1을 사용하고 있고 컴파일 SDK 버전이 6.0이면 manifest.xml 파일로 이동하여 다음 코드를 변경합니다.
코드는 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lesterxu.testapp2">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
이것은 나의 문제를 해결했습니다.
활동을 표시합니다.
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".SplashScreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
"AppTheme" 이름 아래 스타일:
<resources>
<!-- Base application theme. -->
<style name="AppTheme"
parent="Theme.AppCompat.Light.NoActionBar">
**<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>**
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
첫 번째 답은 양서류입니다.여기 제 설명이 있습니다: 추가:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
oncreate() 방식으로.
이전:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
(SetContentView 바로 전이 아님) 이 작업을 수행하지 않으면 강제로 닫힙니다. +1 이 대답입니다.
저는 이 오류가 발생할 수 있는 두 가지 이유를 찾았습니다.
하나. Window 플래그는 이미 내부에 설정되어 있습니다.super.onCreate(savedInstanceState);
이 경우 다음 명령 순서를 사용할 수 있습니다.
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
두 번째. 제목 표시줄 안에 뒤로/위로 단추가 있습니다. 즉, 현재 활동이 다른 활동의 계층적 하위 항목이며, 이 경우 내부에서 이 코드 행을 주석 처리하거나 제거할 수 있습니다.onCreate
방법.
getActionBar().setDisplayHomeAsUpEnabled(true);
사용자 YaW와 Doug Paul이 말하는 것을 수행하는 경우 setContentView를 호출하기 전에 창 기능을 설정해야 합니다.그렇지 않으면 예외가 발생합니다.
이것이 전체 코드의 모습입니다.Android.view 가져오기를 확인합니다.창문.
package com.hoshan.tarik.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
}
}
@style/테마를 추가합니다.AppCompat.Light.AndroidManifest.xml의 작업에 다음과 같은 액션 바가 없습니다.
<activity
android:name=".activities.MainActivity"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
언급URL : https://stackoverflow.com/questions/2591036/how-to-hide-the-title-bar-for-an-activity-in-xml-with-existing-custom-theme
'sourcecode' 카테고리의 다른 글
Vuex 상태는 일반 기능에 의해 변형되지 않지만 전용 기능에 의해 변형됩니다. (0) | 2023.06.12 |
---|---|
여러 줄의 설명 해결 방법? (0) | 2023.06.12 |
Google Firebase 오류(정의되지 않은 함수가 반환됨, 예상 약속 또는 값) (0) | 2023.06.12 |
CSS - HTML 페이지 바닥글을 최소 높이로 페이지 하단에 유지하되 페이지와 겹치지 않도록 합니다. (0) | 2023.06.12 |
경골의 모든 행 표시/인쇄(tbl_df) (0) | 2023.06.12 |