Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 蜂窝背景绘图问题_Android_Android Relativelayout - Fatal编程技术网

Android 蜂窝背景绘图问题

Android 蜂窝背景绘图问题,android,android-relativelayout,Android,Android Relativelayout,我在蜂巢上看到了我无法理解的绘图问题。由于某种原因,当我在代码中将按钮添加到视图时,视图的背景消失(变为黑色) 这在运行2.3的Galaxy选项卡上运行良好。它在模拟器或运行3.2的Motorolla Xoom上失败 详情: 在onCreate()中,我将在main.xml中定义的relativeLayout上设置背景颜色或背景图像。我的relativeLayout被定义为填充父对象 我的活动有一个OnTouchListener,我在relativeLayout中添加了两个绿色按钮(一个左对齐,

我在蜂巢上看到了我无法理解的绘图问题。由于某种原因,当我在代码中将按钮添加到视图时,视图的背景消失(变为黑色)

这在运行2.3的Galaxy选项卡上运行良好。它在模拟器或运行3.2的Motorolla Xoom上失败

详情:

在onCreate()中,我将在main.xml中定义的relativeLayout上设置背景颜色或背景图像。我的relativeLayout被定义为填充父对象

我的活动有一个OnTouchListener,我在relativeLayout中添加了两个绿色按钮(一个左对齐,一个右对齐)

当我添加这两个按钮时,relativeLayout的背景消失(显示为全黑色)。我无法解释为什么

线索:

  • 如果我将其中一个绿色按钮的颜色改为color.TRANSPARENT,那么一切都正常,我的背景也不会消失。这似乎是一个很大的线索,但我不明白这是什么意思

  • 当使用彩色背景时,如果我将targetSdkVersion设置为“11”而不是“7”(我的目标是2.1/7),它会工作,并且我的彩色背景不会消失。但图像仍然是破碎的

  • 当使用彩色背景时,我可以调用setDrawingCacheBackgroundColor(color.RED),它会产生红色背景而不是黑色背景。我可以用它作为解决方案,将缓存颜色设置为我的背景色,但在使用图像时这不起作用

这感觉真的像是android中的一个bug,因为我看不出我的代码有任何错误。我将感谢任何帮助或建议

下面是我的简单main.xml布局:

<?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的相对布局上遇到了类似的问题,没有正确测量。目前还没有解决办法。