मैं जिस योजना को प्राप्त करने की कोशिश कर रहा हूँ, वह सबसे अच्छी योजना है जिसे मैंने mspaint के साथ बनाया है:

enter image description here

मैंने FLAG_NOT_TOUCH_MODAL को सेट करने की कोशिश की है, जो वर्णन के अनुसार ठीक वैसा ही होना चाहिए जैसा मैं चाहता हूं, लेकिन यह बस काम नहीं करता है। मेरी गतिविधि इसकी सीमाओं के बाहर भी ALL स्पर्श घटनाओं का उपभोग करती है।

यदि मैं FLAG_NOT_FOCUSABLE सेट करता हूं, तो निश्चित रूप से गतिविधि के तहत देशी नियंत्रण स्पर्श करने योग्य हैं, लेकिन तब गतिविधि पूरी तरह से अपनी सीमाओं के अंदर छूने पर भी नहीं होती है।

मैंने मेनिफ़ेस्ट में isFloatingWindow=true सेट करने की कोशिश की है, लेकिन इससे कोई फ़र्क नहीं पड़ा।

क्या कोई इसे हासिल कर सकता है? मैं वास्तव में एक छोटी डेमो गतिविधि की सराहना करता हूं जो इस तरह से काम करती है ताकि मैं इसे ले जा सकूं और वहां से काम कर सकूं। मैंने WindowManager और Intent झंडे के लिए कई क्रमपरिवर्तन की कोशिश की है और कुछ भी ठीक वैसा नहीं लगता जैसा मुझे चाहिए।

अग्रिम में धन्यवाद।

अद्यतन:

मैंने आपके सुझाव की कोशिश की है, लेकिन यह अभी भी वांछित के रूप में काम नहीं किया।

यह मेरी गतिविधि लेआउट xml है:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="385dp"
android:layout_height="300dp"
android:theme="@android:style/Theme.Dialog"
tools:context="com.ui.activities.TestActivity"
android:id="@+id/testLayout"
android:visibility="visible"
android:background="@drawable/abc_ab_solid_light_holo"
android:clickable="true">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Click me"
    android:id="@+id/button"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="35dp"
    android:clickable="true"
    android:enabled="true"
    android:onClick="onClick" />

और यह Activity वर्ग है:

public class TestActivity extends Activity implements View.OnClickListener {

private String TAG = TestActivity.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);

    setWindowParams();
}

private void setWindowParams() {
    WindowManager.LayoutParams wlp = getWindow().getAttributes();
    wlp.dimAmount = 0;
    wlp.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    getWindow().setAttributes(wlp);
}

और दुर्भाग्य से, यह परिणाम है:

Does not look like a dialog

मैं क्या खो रहा हूँ?

धन्यवाद।

7
Nom1fan 22 नवम्बर 2015, 12:24

2 जवाब

सबसे बढ़िया उत्तर

अपने मेनिफ़ेस्ट में Dialog थीम पर Dialog सेट करें। उदाहरण के लिए:

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

फिर onCreate() में निम्न Window पैरामीटर सेट करें:

public void setWindowParams() {
    WindowManager.LayoutParams wlp = getWindow().getAttributes();
    wlp.dimAmount = 0;            
    wlp.flags = WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS |
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
    getWindow().setAttributes(wlp);     
}
9
Mike M. 22 नवम्बर 2015, 09:48

आप अपने AndroidManifest फ़ाइल में विशेष थीम के साथ गतिविधि का उपयोग कर सकते हैं:

<style name="Theme.Transparent">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowContentOverlay">@null</item>
        <!--<item name="android:backgroundDimEnabled">false</item>--> // show/hide background 
        <item name="android:windowIsFloating">true</item>
</style>

और गतिविधि में mach_parent विशेषता सेट करना न भूलें जैसे:

override fun onStart() {
        super.onStart()
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
    }
0
Djek-Grif 7 फरवरी 2019, 21:45