尝试在 Android Studio (Java) 中制作弹出窗口/叠加层

Posted

技术标签:

【中文标题】尝试在 Android Studio (Java) 中制作弹出窗口/叠加层【英文标题】:Trying to Make Pop-Up Window/Overlay in Android Studio (Java) 【发布时间】:2021-08-17 00:22:16 【问题描述】:

我正在尝试在 android Studio 中创建一个包含 2 个活动的弹出窗口/叠加层。当按下某个按钮(下面第一张图片中的绿色加号按钮)时,它将启动具有不同布局 (.xml) 文件的较小尺寸的第二个活动。在 AndroidManifest.xml 中声明第二个 Activity 时,它使用我创建的自定义主题使第一个 Activity 出现在它下面,但是,它无法正常工作。

这是两个活动的图片:

第一个活动 -

第二个活动-

代码如下:

MainActivity -

public class MainActivity extends AppCompatActivity 

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

        Util.initScreenRes(this);    // initializes screen resolution for later pop-up window sizing

    

    public void ibAddOnClick(View view)
        startActivity(new Intent(MainActivity.this, AddPopUpActivity.class));
    


AddPopUpActivity -

public class AddPopUpActivity extends Activity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_popup_activity);
        getWindow().setLayout((int) (Util.screenRes.x * 0.8), (int) (Util.screenRes.y * 0.5));
    


实用工具-

public class Util 

    public static Point screenRes;

    public static void initScreenRes(Activity a)
        final DisplayMetrics dm = new DisplayMetrics();
        a.getWindowManager().getDefaultDisplay().getMetrics(dm);
        screenRes = new Point(dm.widthPixels, dm.heightPixels);
    


最后,这里是 AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="App.ProgressTracker">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.ProgressTracker">
        <activity
            android:name="App.FrontEnd.MainActivity"
            android:label="@string/app_name"
            android:theme="@style/Theme.ProgressTracker.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="App.FrontEnd.AddPopUpActivity"
            android:label="ProgressTracker"
            android:theme="@style/Theme.ProgressTracker.PopUp">
        </activity>

    </application>

</manifest>

作为参考,我在 YouTube 上使用了本教程来了解我的做法: https://www.youtube.com/watch?v=fn5OlqQuOCk&ab_channel=FilipVujovic

如果能提供任何帮助,我将不胜感激。提前谢谢!

【问题讨论】:

【参考方案1】:

在 AndroidManifest.xml 中设置弹出活动的主题为 android:theme="@android:style/Theme.Dialog"

【讨论】:

以上是关于尝试在 Android Studio (Java) 中制作弹出窗口/叠加层的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:找不到Java [重复]

如何在 android studio (java) 中清除通知

java.lang.NullPointerException:尝试调用虚拟方法android studio [重复]

Android Studio choreographer.java

尝试在 Android Studio 上实现 RapidApi

尝试接受 Android Studio 许可证时,我不断收到此错误“java.lang.NoClassDefFoundError”