web-dev-qa-db-ja.com

Androidダイアログ:タイトルバーの削除

私はソースを特定できない奇妙な振る舞いをしています。

クラシックのアプリがあります

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>/>
106
Jason Rogers

つかいます、

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

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>
24
Pratik Bhat

AppCompatDialogで上記のすべての回答が機能しない

AppCompatDialogを使用している場合、これを試してください

重要な注意: setContentViewを呼び出す前にこれを設定します。

dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);

14
Ranjith Kumar

ここにダイアログに表示される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();
4
Sagar Vaghela

カスタムビューを使用している場合は、このようなコンテンツビューを追加する前にウィンドウ機能をリクエストすることを忘れないでください

dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();
2
Mehroz Munir

タイトルバーを表示しないために、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>
2
Mohit Kanada

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
duggu

私は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
mbm29414

私は次のバリアントを使用しています:

カスタムダイアログのアクティビティ:

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
V.March

次の亜種では反応がありません:

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

だから、私は次を使用しようとします:

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

このバリアントは優れた機能を発揮します。

1
EvgeTymo

これは私のために働いた。

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
Jasmine John
**write this before adding view to dialog.**

dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);

0
dileep krishnan

このシンプルな 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に1行を追加して、あなたは行ってもいいです

dependencies {
    compile 'com.vistrav:pop:2.0'
}
0
Dharmesh Gohil