जवाबों:
संवाद के रूप में गतिविधि शुरू करने के लिए मैंने इसे इस तरह परिभाषित किया AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
अपने activity
टैग के अंदर इस प्रॉपर्टी का उपयोग इस बात से बचने के लिए करें कि आपका डायलॉग हाल ही में उपयोग की गई ऐप सूची में दिखाई देता है
android:excludeFromRecents="true"
यदि आप अपने संवाद / गतिविधि को तब नष्ट करना चाहते हैं जब उपयोगकर्ता संवाद के बाहर क्लिक करता है:
setContentView()
आपके Activity
उपयोग के बाद :
this.setFinishOnTouchOutside(false);
अब जब मैं startActivity()
इसे डायलॉग के रूप में प्रदर्शित करता हूं , तो पिछली गतिविधि के साथ दिखाया जाता है जब उपयोगकर्ता बैक बटन दबाता है।
ध्यान दें कि यदि आप ActionBarActivity
(या AppCompat विषय) का उपयोग कर रहे हैं , तो आपको @style/Theme.AppCompat.Dialog
इसके बजाय उपयोग करने की आवश्यकता होगी ।
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
के बाद setContentView()
जब आप संवाद आपके द्वारा बनाए बाहर क्लिक करें नष्ट किया जा रहा से गतिविधि को रोकने के लिए विधि।
इस कोड का उपयोग करें ताकि उपयोगकर्ता द्वारा संवाद बॉक्स के बाहर छूने पर संवाद गतिविधि बंद न हो:
this.setFinishOnTouchOutside(false);
एपीआई स्तर 11 की आवश्यकता है
आप इस शैली को मूल्यों / शैलियों में परिभाषित कर सकते हैं।
<style name="Theme.UserDialog" parent="android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@drawable/trans</item>
</style>
और इसका उपयोग करें AndroidManifest.xml:
<activity android:name=".SplashActivity"
android:configChanges="orientation"
android:screenOrientation="sensor"
android:theme="@style/Theme.UserDialog">
@drawable/trans
: आप का उपयोग करने में सक्षम होना चाहिए @android:color/transparent
जो एक ColorDrawable
पृष्ठभूमि के रूप में उपयोग करने के लिए पैदा करेगा ।
1 - आप एक ही गतिविधि का उपयोग संवाद और पूर्ण स्क्रीन, गतिशील रूप से कर सकते हैं:
कॉल करने setTheme(android.R.style.Theme_Dialog)
से पहले setContentView(...)
और super.oncreate()
अपनी गतिविधि में कॉल करें।
2 - यदि आप गतिविधि थीम शैली को बदलने की योजना नहीं बनाते हैं जिसका आप उपयोग कर सकते हैं
<activity android:theme="@android:style/Theme.Dialog" />
(@faisal khan द्वारा उल्लिखित)
<activity android:theme="@android:style/Theme.Dialog" />
) और एक संवाद या एक गतिविधि के लिए गतिविधि के प्रोग्राम के रूप में सेट विषय onCreate में stackoverflow.com/a/35915764/2898715
अगर आपको Appcompat Version की जरूरत है
style.xml
<!-- Base application theme. -->
<style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<!-- Customize your theme here. -->
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
yourmanifest.xml
<activity
android:name=".MyActivity"
android:label="@string/title"
android:theme="@style/AppDialogTheme">
</activity>
<item name="windowNoTitle">true</item>
इसे मेरे लिए काम करने के लिए जोड़ना था । मैंने भी <item name="android:windowActionBar">false</item>
अच्छे उपाय के लिए जोड़ा ।
<item name="android:windowNoTitle">true</item>
काम (एंड्रॉयड 5.0.1) नहीं था, और मैं करने के लिए बदलना पड़ा<item name="windowNoTitle">true</item>
यदि आपकी गतिविधि को एक संवाद के रूप में प्रस्तुत किया जा रहा है, तो बस अपनी गतिविधि के xml में एक बटन जोड़ें,
<Button
android:id="@+id/close_button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Dismiss" />
फिर अपनी गतिविधि के जावा कोड में एक क्लिक श्रोता संलग्न करें। श्रोता में, बस बुलाओfinish()
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
यह आपके संवाद को खारिज कर सकता है, आपको कॉलिंग गतिविधि पर वापस लौटना चाहिए।
यदि आप गतिविधि शीर्ष लेख को निकालना चाहते हैं और संवाद के लिए एक कस्टम दृश्य प्रदान करते हैं, तो आप अपने गतिविधि गतिविधि में निम्नलिखित को जोड़ सकते हैं
android:theme="@style/Base.Theme.AppCompat.Dialog"
और अपनी गतिविधियों को अपने इच्छित दृश्य के साथ डिज़ाइन करें
अपने Android मैनिफ़ेस्ट फ़ाइल में थीम सेट करें।
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
और समाप्त करने के लिए संवाद स्थिति को स्पर्श पर सेट करें।
this.setFinishOnTouchOutside(false);
संवाद के रूप में गतिविधि बनाएँ, यहाँ पूर्ण उदाहरण है
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
class DialogActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dialog)
this.setFinishOnTouchOutside(true)
btnOk.setOnClickListener {
finish()
}
}
}
activity_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0072ff"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="@dimen/_300sdp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/txtTitle"
style="@style/normal16Style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="Download"
android:textColorHint="#FFF" />
<View
android:id="@+id/viewDivider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#fff"
android:backgroundTint="@color/white_90"
app:layout_constraintBottom_toBottomOf="@id/txtTitle" />
<TextView
style="@style/normal14Style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="Your file is download"
android:textColorHint="#FFF" />
<Button
android:id="@+id/btnOk"
style="@style/normal12Style"
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_marginBottom="20dp"
android:background="@drawable/circle_corner_layout"
android:text="Ok"
android:textAllCaps="false" />
</LinearLayout>
</LinearLayout>
कुछ बार आप नीचे दिए गए अपवाद को प्राप्त कर सकते हैं
इसके कारण: java.lang.IllegalStateException: आपको इस गतिविधि के साथ एक Theme.AppCompat विषय (या वंशज) का उपयोग करने की आवश्यकता है।
तो हल करने के लिए आप सरल समाधान का उपयोग कर सकते हैं
AppCompact के लिए संवाद के रूप में प्रकट में आप गतिविधि के विषय जोड़ें।
android:theme="@style/Theme.AppCompat.Dialog"
यह किसी के लिए मददगार हो सकता है।