Android片段中的动态背景

Posted

技术标签:

【中文标题】Android片段中的动态背景【英文标题】:Dynamic background in Android fragment 【发布时间】:2020-02-22 20:37:29 【问题描述】:

我想根据一天中的时间更改片段的背景(白天亮,夜晚暗)。现在,我在片段布局中硬编码了背景图像:

android:background="@drawable/weatherbg"

但是要拥有动态背景,我假设我必须在片段活动类中的 onCreate 方法中执行此操作? 我不确定如何,因为您不能在片段中使用 setContentView。 我知道我必须编写一些条件代码,但不确定在片段内设置背景图像的方法是什么。

这是我第一次使用 Android,非常感谢任何帮助。

【问题讨论】:

你想实现暗模式吗? @JimaleAbdi 嗨,不,我不想实现暗模式,我只是想有一个白天/黑夜背景,因为页面显示天气预报。 好的,我认为你有一个白天和晚上的可绘制对象,如果是的话,它很容易实现,但检测是白天还是黑夜需要注意 @JimaleAbdi 是的,但是如何在我的活动中调用可绘制对象/设置背景?现在我在布局 xml 中设置它,但我认为你不能在那里有条件语句(?)(如 if day: background="@drawable/day" 【参考方案1】:

您可以使用setBackgroundResource() 更改背景,但您必须为您的View 提供ID

RelativeLayout rl;    

 rl = (RelativeLayout)findViewById(R.id.relativeLayout1); // the id of the view


 rl.setBackgroundResource(R.drawable.day_image); // change the background

来检测是白天还是晚上你可以使用this免费API也看this

【讨论】:

谢谢!但是,我在天气片段中做了以下操作,但它不起作用:public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) View view = inflater.inflate(R.layout.fragment_weather, container, false); view.setBackgroundResource(R.drawable.weatherbg); 可能是在我的 styles.xml 中,我为整个应用程序设置了一个主题?我需要额外的 smt 来覆盖它吗?再次感谢您的帮助。 如果你使用片段参考this

以上是关于Android片段中的动态背景的主要内容,如果未能解决你的问题,请参考以下文章

Android片段中的EditText值不刷新

Android在滚动时修复了滚动视图中的背景图像

当替换片段视频仍在android中播放背景时

从ViewPager android替换片段

以编程方式将片段添加到android中的框架布局

Android - 导航抽屉 - 与动态菜单项重叠的片段