如何为所有的活动设置背景?

5

如何为Android应用程序中的所有活动设置背景并保持其纵横比?

我在样式中使用android:windowBackground,但是我不知道如何保持我的背景图像的纵横比。

是否只有手动为所有活动添加具有背景的ImageView的方法?


3
创建自己的 BaseActivity 类,让其他所有的 Activity 类都继承它? - OneCricketeer
听起来是个好主意。那么我该如何为此设置背景? - Alexey Markov
不过,我认为这并不是在其上绘制其他内容的理想解决方案。 - OneCricketeer
2个回答

3

你可能可以在 styles.xml 中设置背景

<style name="AppTheme.FullBackground" parent="AppTheme">
    <item name="android:background">#757575</item>
</style>

(这里的AppTheme可能是您已经定义的主题,我只是使用了灰色,但它也可以是一个可绘制的对象)

然后将其添加到您的清单文件中

<activity 
    android:name=".FooActivity"
    android:theme="@style/AppTheme.FullBackground">
</activity>

既然您必须将活动添加到清单中,那么这是检查所有活动是否具有背景的好方法。当然,您仍然可以扩展BaseActivity,并且只让BaseActivity类维护主题设置。


我已经使用了 android:background 来设置背景图片,但它被拉伸了,而且很难看。 - Alexey Markov
你的问题是windowBackground而不是background,但我明白你的意思,并且我找到了这篇文章https://dev59.com/j2025IYBdhLWcg3wnXWf - OneCricketeer
所有视图都使用 "background" 属性,但如果您只想为活动工作,则必须使用 "windowBackground"。 - Hadi Ahmadi

2
您可以定义自己的基本活动作为抽象类,并使应用程序中的每个其他活动从该类扩展:
abstract class BaseActivity extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // this is a generic way of getting your root view element
        View rootView = (View) findViewById(android.R.id.content);
        rootView.setBackgroundDrawable(getResources().getDrawable(R.drawable.your_image));        
    }
}

那么你应该在你想要的活动中扩展它:
public class YourActivity extends BaseActivity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接