gpt4 book ai didi

android - 以编程方式设置 Activity 背景时背景为黑色

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:14:09 24 4
gpt4 key购买 nike

我有一个全屏 Activity ,我想以编程方式为其设置背景。我的可绘制文件夹中有四张不同的图片,每次创建 Activity 时,我想随机选择一张作为背景。这是我的代码:

LayoutInflater inflater = getLayoutInflater();
FrameLayout layout = (FrameLayout) inflater.inflate(R.layout.activity_my, null);
int[] images = {R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4};
Random rand = new Random();
layout.setBackgroundResource(images[rand.nextInt(images.length)]);

这是 XML 文件:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.mkessler.MyApp.MyActivity">


<TextView
android:id="@+id/fullscreen_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:keepScreenOn="true"
android:textColor="#33b5e5"
android:textSize="50sp"
android:textStyle="bold" />


<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<LinearLayout
android:id="@+id/fullscreen_content_controls"
style="?metaButtonBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom|center_horizontal"
android:background="@color/black_overlay"
android:orientation="horizontal"
tools:ignore="UselessParent">

<Button
android:id="@+id/dummy_button"
style="?metaButtonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Unimportant text"
android:onClick="someFunction"/>

</LinearLayout>
</FrameLayout>

但是,当我在手机上运行该应用程序时,背景只是黑色。当我尝试使用特定图像之一设置它时,也会发生同样的情况。不用了,当我从 XML 文件中设置它时它工作正常。

编辑:澄清一下,即使我尝试以编程方式而不是通过 XML 文件将其设置为给定图像,我也会得到黑色背景。我认为专注于问题的随机方面不会有任何结果。

编辑 #2:我的项目的最小 API 设置为 15。不知道这是否相关,但万一有人认为这很重要...

最佳答案

不要通过 LayoutInflater 获取 View ,如果你的 Activity 有 xml 布局并且你调用了 setContentView(int resId) 你就可以找到你的 Root View 和设置背景。

FrameLayout layout = (FrameLayout) findViewById(...);
layout.setBackgroundResource(images[rand.nextInt(images.length)]);

如果你想通过 LayoutInflater 获取 View :

LayoutInflater inflater = getLayoutInflater();
FrameLayout layout = (FrameLayout) inflater.inflate(R.layout.activity_my, null);
layout.setBackgroundResource(images[rand.nextInt(images.length)]);
setContentView(layout);

关于android - 以编程方式设置 Activity 背景时背景为黑色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39945590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com