Android 대화 상자 : 제목 표시 줄 제거


108

나는 내가 원인을 정확히 찾아 낼 수없는 이상한 행동을하고있다.

클래식이있는 내 앱이 있습니다.

requestWindowFeature(Window.FEATURE_NO_TITLE);

제목 / 상태 표시 줄을 제거합니다.

그런 다음 사용자가 정보 (이름 등)를 입력 할 수있는 대화 상자를 만듭니다.

실제 키보드를 사용하면 문제가 없지만 가상 키보드를 사용할 때 이상한 동작이 발생합니다.

가상 키보드의 키를 누를 때마다 제목 / 상태 표시 줄이 다시 나타나 모든 키보드 레이아웃을 밀고 다시 사라집니다 (애플리케이션을 시작할 때의 애니메이션처럼)

다음은 몇 가지 코드입니다.

        dialog = new Dialog(context);
        dialog.setContentView(R.layout.logindialog);
        dialog.setTitle("Login:");

        WindowManager.LayoutParams a = dialog.getWindow().getAttributes();

//      dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

        a.dimAmount = 0;
        dialog.getWindow().setAttributes(a);

        dialog.setCancelable(true);
        dialog.getWindow().setLayout(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);

그리고

dialog.show();

나는 시도했다

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

하지만 내 앱이 충돌합니다.

여기에 xml이 있습니다

    <TextView android:id="@+id/LoginText"
        android:gravity="fill"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login:">
    </TextView>         
    <EditText android:id="@+id/LoginEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="jason"
        android:layout_width="200sp"/>
    <TextView android:id="@+id/PasswordText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Password:">
    </TextView>         
    <EditText android:id="@+id/PasswordEdit"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:text="welcome"
        android:layout_width="200sp"
        android:password="true"/>
<LinearLayout 
    android:id="@+id/test2"
    android:gravity="center_horizontal"
    android:orientation="horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
<Button android:id="@+id/LoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Login" />
<Button android:id="@+id/CreateButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Create" />
<Button android:id="@+id/CancelLogin"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:text="Cancel" />
</LinearLayout>/>


dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); 사용할 때 logcat을 게시하십시오. 또한 위의 코드 줄을 사용하는 동안에는 dialog.setTitle ( "Login :");
ingsaurabh 2011 년

제안 해 주셔서 감사하지만 문제는 아닙니다. 키보드로 무언가를 입력하면 상태 표시 줄이 키를 누를 때마다 계속 나타나고 사라집니다.
Jason Rogers

답변:


434

사용하다,

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

제안 해 주셔서 감사하지만 문제는 아닙니다. 키보드로 무언가를 입력하면 상태 표시 줄이 키를 누를 때마다 계속 나타나고 사라집니다.
Jason Rogers

9
일부 장치에서 이로 인해 대화 상자 레이아웃의 너비가 손실되지만 높이는 유지됩니다. .show () 전에 이것을 추가하면 이미 xml 레이아웃에 설정되어 있지만 수정되었습니다. dialog.getWindow (). setLayout (WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
a54studio 2015

1
DialogFragment의 상속인의 경우에 우리는 둘 필요가 getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);내부 onCreateView.
Anton Holovin

1
AppCompatDialog를 사용하는 경우 다음을 사용하십시오. dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
Firzen

24

styles.xml에서 새 스타일 만들기

<style name="myDialog" parent="android:style/Theme.Dialog">
   <item name="android:windowNoTitle">true</item>
</style>

그런 다음 매니페스트에 추가하십시오.

 <activity android:name=".youractivity" android:theme="@style/myDialog"></activity>

14

위의 모든 답변이 AppCompatDialog에서 작동하지 않습니다.

AppCompatDialog 를 사용하는 경우 이것을 시도하십시오

중요 참고 : setContentView를 호출하기 전에이를 설정하십시오.

dialog.supportRequestWindowFeature (Window.FEATURE_NO_TITLE);


고마워, 그게 내 문제 였어, 나를 미치게 만들었다.
gregko

5

여기 대화 상자에 표시된 XML을 작성하십시오. activity_no_title_dialog입니다.

final Dialog dialog1 = new Dialog(context);
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog1.setContentView(R.layout.activity_no_title_dialog);
dialog1.show();

2

제목 표시 줄을 표시하지 않도록 Android 매니페스트 파일에 테마를 정의 할 수도 있습니다.

android:theme="@android:style/Theme.Light.NoTitleBar"제목 표시 줄을 표시하고 싶지 않은 활동에서 테마 를 정의하기 만하면 됩니다.

예:-

    <uses-sdk android:minSdkVersion="4"android:targetSdkVersion="4" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".splash"
              android:label="@string/app_name" android:screenOrientation="portrait"
              android:theme="@android:style/Theme.Light.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

<activity android:name="main" android:screenOrientation="portrait" android:theme="@android:style/Theme.Light.NoTitleBar"></activity>


상태 표시 줄이없는 활동이 이미 있지만 필수 키보드에 입력 할 때 활동을 시작하고 상태 표시 줄이 사라질 때와 마찬가지로 상태 표시 줄이 나타나고 사라집니다 (모든 레이아웃을 누름). 이번에는 키보드를 터치 할 때마다
Jason Rogers

2

사용자 정의보기를 사용하는 경우 이와 같은 컨텐츠보기를 추가하기 전에 창 기능을 요청하십시오.

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();

1

setcontentview 전에 아래 코드를 사용하십시오.

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
dialog.setContentView(R.layout.custom_dialog);

참고 :- 위 코드는 위 코드를 사용해야합니다.dialog.setContentView(R.layout.custom_dialog);

XML에서 테마 사용

android:theme="@android:style/Theme.NoTitleBar"

또한 styles.xml :

<style name="hidetitle" parent="android:style/Theme.Dialog">
   <item name="android:windowNoTitle">true</item>
</style>

그리고:

Dialog dialog_hidetitle_example = new Dialog(context, R.style.hidetitle);

1

저는 Android 초보자이며 제목 표시 줄을 제거하려는이 질문을 발견했습니다.

활동을 사용하고 있으며 대화 상자로 표시하고 있습니다. 나는 테마를 둘러보고 유용한 기본 테마를 발견했습니다.

AndroidManifest.xml제목 표시 줄이 표시 될 때 사용한 코드는 다음과 같습니다 .

<activity
    android:name=".AlertDialog"
    android:theme="@android:style/Theme.Holo.Dialog"

    >

</activity>

내가 원하는 결과를 얻은 변경 사항은 다음과 같습니다.

<activity
    android:name=".AlertDialog"
    android:theme="@android:style/Theme.Holo.Dialog.NoActionBar"

    >

</activity>

제가 말했듯이 저는 아직 Android를 처음 사용하기 때문에 바람직하지 않은 부작용이있을 수 있지만 대화 상자에서 제목 표시 줄을 제거하기 위해 원하는 결과를 얻은 것 같습니다.


1

다음 변형을 사용하고 있습니다.

내 사용자 지정 대화 상자의 활동 :

public class AlertDialogue extends AppCompatActivity {

    Button btnOk;
    TextView textDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_alert_dialogue);

        textDialog = (TextView)findViewById(R.id.text_dialog) ;
        textDialog.setText("Hello, I'm the dialog text!");

        btnOk = (Button) findViewById(R.id.button_dialog);
        btnOk.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}

activity_alert_dialogue.xml :

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="300dp"
    android:layout_height="wrap_content"
    tools:context=".AlertDialogue">

    <TextView
        android:id="@+id/text_dialog"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="24dp"
        android:text="Hello, I'm the dialog text!"
        android:textColor="@android:color/darker_gray"
        android:textSize="16dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button_dialog"
        android:layout_width="wrap_content"
        android:layout_height="36dp"
        android:layout_margin="8dp"
        android:background="@android:color/transparent"
        android:text="Ok"
        android:textColor="@android:color/black"
        android:textSize="14dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/text_dialog" />


</android.support.constraint.ConstraintLayout>

명백한:

<activity android:name=".AlertDialogue"
            android:theme="@style/AlertDialogNoTitle">
</activity>

스타일:

<style name="AlertDialogNoTitle" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:windowNoTitle">true</item>
</style>

1

다음 변형에서는 반응이 없습니다.

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

그래서 다음을 사용하려고합니다.

dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE); //before     
dialog.setContentView(R.layout.logindialog);

이 변형은 훌륭하게 작동합니다.


0

이것은 나를 위해 일했습니다.

Dailog dialog = new Dialog(MyActivity.this, R.style.dialogstyle);

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="dialogstyle" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@null</item>
        <item name="android:windowNoTitle">false</item>
    </style>
</resources>

0

이 간단한 Android 대화 상자 팝업 라이브러리를 사용해 볼 수 있습니다. . 활동에 사용하는 것은 매우 간단합니다.

제출 버튼을 클릭하면 위의 lib를 코드에 포함시킨 후 다음 코드를 시도하십시오.

Pop.on(this)
   .with()
   .title(R.string.title) //ignore if not needed
   .icon(R.drawable.icon) //ignore if not needed
   .cancelable(false) //ignore if not needed
   .layout(R.layout.custom_pop)
   .when(new Pop.Yah() {
       @Override
       public void clicked(DialogInterface dialog, View view) {
           Toast.makeText(getBaseContext(), "Yah button clicked", Toast.LENGTH_LONG).show();
       }
   }).show();

gradle에 한 줄을 추가하면 좋습니다.

dependencies {
    compile 'com.vistrav:pop:2.0'
}

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.