Android 蜂窝背景绘图问题
我在蜂巢上看到了我无法理解的绘图问题。由于某种原因,当我在代码中将按钮添加到视图时,视图的背景消失(变为黑色) 这在运行2.3的Galaxy选项卡上运行良好。它在模拟器或运行3.2的Motorolla Xoom上失败 详情: 在onCreate()中,我将在main.xml中定义的relativeLayout上设置背景颜色或背景图像。我的relativeLayout被定义为填充父对象 我的活动有一个OnTouchListener,我在relativeLayout中添加了两个绿色按钮(一个左对齐,一个右对齐) 当我添加这两个按钮时,relativeLayout的背景消失(显示为全黑色)。我无法解释为什么 线索:Android 蜂窝背景绘图问题,android,android-relativelayout,Android,Android Relativelayout,我在蜂巢上看到了我无法理解的绘图问题。由于某种原因,当我在代码中将按钮添加到视图时,视图的背景消失(变为黑色) 这在运行2.3的Galaxy选项卡上运行良好。它在模拟器或运行3.2的Motorolla Xoom上失败 详情: 在onCreate()中,我将在main.xml中定义的relativeLayout上设置背景颜色或背景图像。我的relativeLayout被定义为填充父对象 我的活动有一个OnTouchListener,我在relativeLayout中添加了两个绿色按钮(一个左对齐,
- 如果我将其中一个绿色按钮的颜色改为color.TRANSPARENT,那么一切都正常,我的背景也不会消失。这似乎是一个很大的线索,但我不明白这是什么意思
- 当使用彩色背景时,如果我将targetSdkVersion设置为“11”而不是“7”(我的目标是2.1/7),它会工作,并且我的彩色背景不会消失。但图像仍然是破碎的
- 当使用彩色背景时,我可以调用setDrawingCacheBackgroundColor(color.RED),它会产生红色背景而不是黑色背景。我可以用它作为解决方案,将缓存颜色设置为我的背景色,但在使用图像时这不起作用
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/MyLayout">
</RelativeLayout>
我遇到了一个类似的问题,我通过使用处理程序来解决它。您需要向活动中实现的处理程序发送消息,并使视图无效。无需
设置DrawingCacheEnabled(false)
。以下是我为解决问题所做的:
protected static final int REFRESH = 0;
private Handler _hRedraw;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
_hRedraw=new Handler(){
@Override
public void handleMessage(Message msg)
{
switch (msg.what) {
case REFRESH:
redrawEverything();
break;
}
}
};
}
private void redrawEverything()
{
android.widget.RelativeLayout layout = (android.widget.RelativeLayout) findViewById( R.id.MyLayout );
layout.invalidate();
layout.refreshDrawableState();
}
现在,在您的OnTouchListener
中,只需使用以下命令向处理程序发送消息:
_hRedraw.sendEmptyMessage(REFRESH);
我遇到了一个类似的问题,我通过使用处理程序来解决它。您需要向活动中实现的处理程序发送消息,并使视图无效。无需
设置DrawingCacheEnabled(false)
。以下是我为解决问题所做的:
protected static final int REFRESH = 0;
private Handler _hRedraw;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
_hRedraw=new Handler(){
@Override
public void handleMessage(Message msg)
{
switch (msg.what) {
case REFRESH:
redrawEverything();
break;
}
}
};
}
private void redrawEverything()
{
android.widget.RelativeLayout layout = (android.widget.RelativeLayout) findViewById( R.id.MyLayout );
layout.invalidate();
layout.refreshDrawableState();
}
现在,在您的OnTouchListener
中,只需使用以下命令向处理程序发送消息:
_hRedraw.sendEmptyMessage(REFRESH);
我在xoom的相对布局上也遇到了类似的问题,没有正确测量。到目前为止还没有解决方案。我在xoom的相对布局上遇到了类似的问题,没有正确测量。目前还没有解决办法。