私はソースを特定できない奇妙な振る舞いをしています。
クラシックのアプリがあります
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); //before
dialog.setContentView(R.layout.logindialog);
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>
AppCompatDialogで上記のすべての回答が機能しない
AppCompatDialogを使用している場合、これを試してください
重要な注意: setContentViewを呼び出す前にこれを設定します。
dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
ここにダイアログに表示される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();
カスタムビューを使用している場合は、このようなコンテンツビューを追加する前にウィンドウ機能をリクエストすることを忘れないでください
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.show();
タイトルバーを表示しないために、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>
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);
私は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に慣れていないので、これは望ましくない副作用があるかもしれませんが、ダイアログからタイトルバーを削除するだけで、私が望んでいた結果を与えたようです。
私は次のバリアントを使用しています:
カスタムダイアログのアクティビティ:
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>
次の亜種では反応がありません:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
だから、私は次を使用しようとします:
dialog.supportRequestWindowFeature(Window.FEATURE_NO_TITLE); //before
dialog.setContentView(R.layout.logindialog);
このバリアントは優れた機能を発揮します。
これは私のために働いた。
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>
**write this before adding view to dialog.**
dialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
このシンプルな 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'
}