【发布时间】:2025-11-21 15:35:01
【问题描述】:
我在屏幕顶部有一个相对布局(例如,在状态栏顶部),我希望它的背景图像与底层系统壁纸相同。这样做没问题:
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
WindowManager window_manager=(WindowManager)getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params=new WindowManager.LayoutParams();
WindowManager.LayoutParams window_manager_layout_params=new WindowManager.LayoutParams(
params.FILL_PARENT,
100,
params.TYPE_SYSTEM_ERROR,
params.FLAG_WATCH_OUTSIDE_TOUCH|
params.FLAG_NOT_FOCUSABLE|
params.FLAG_LAYOUT_IN_SCREEN,
PixelFormat.TRANSLUCENT);
window_manager_layout_params.gravity=Gravity.TOP;
RelativeLayout rl=new RelativeLayout(this);
WallpaperManager wpm =WallpaperManager.getInstance(this);
Drawable d=wpm.getDrawable();
rl.setBackgroundDrawable(d);
window_manager.addView(rl,window_manager_layout_params);
}
}
问题是,如何设置相对布局的背景可绘制对象以完全匹配相对布局后面的壁纸部分? (没有拉伸和完全相同的位置)。
注意:要使代码正常工作,您需要在清单中添加警报窗口的权限:
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
编辑:更清楚:
【问题讨论】:
-
如图所示,将 relativeLayout 背景设置为
TRANSPARENT不会解决问题吗? -
不是真的,因为相对布局后面是状态栏,我更新了问题,之前忘了提这个
-
@RafaelCardoso:如果我将背景设置为透明,如果有其他窗口/图标,任何其他位置都不能保证看到壁纸,...在后台
-
请更清楚你的问题..!!
标签: android android-relativelayout setbackground