Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.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应用程序上未在xml定义的框架布局中显示图像视图_Android_Xml_Matrix_Imageview_Android Framelayout - Fatal编程技术网

Android应用程序上未在xml定义的框架布局中显示图像视图

Android应用程序上未在xml定义的框架布局中显示图像视图,android,xml,matrix,imageview,android-framelayout,Android,Xml,Matrix,Imageview,Android Framelayout,我在xml a中定义了一个框架布局,如下所示: //pseudo code <FrameLayout android:height = "match_parent" // same for width android:background="@android:color/white" padding = "20dp" id = "polygraph" layout_gravity="center"/> 我动态创建了下面的图像视图,但不知怎么的,它没有显示在这个框架布局中,这个框架布

我在xml a中定义了一个框架布局,如下所示:

//pseudo code
<FrameLayout
android:height = "match_parent" // same for width
android:background="@android:color/white"
padding = "20dp"
id = "polygraph"
layout_gravity="center"/>
我动态创建了下面的图像视图,但不知怎么的,它没有显示在这个框架布局中,这个框架布局是另一个框架布局中的许多视图之一,它保存了我的用户界面的所有视图

view1 = new ImageView(this);
view1.setAdjustViewBounds(false);
matrix = new Matrix();
view1.setScaleType(ImageView.ScaleType.Matrix);//I have tried: ScaleType.Center it did not work at all
view1.setImageMatrix(matrix);
view1.setBackgroundColor(Color.GRAY);
params11= new FrameLayout.LayoutParams(200,300,Gravity.CENTER);
view1.setLayoutParams(params11);
DummyDraw drawD = new DummyDraw(this);
view1.setImageDrawable(drawD);

frar.addView(view1);

//somewhere down on onWindowsFocusChange()
frar.invalidate();  //try to invalidate to see if it will show the imageview
根本不显示图像视图。我尝试过不同的方法,例如:

frar.addView(view1,params11); //did not work
//instead of view1.setImageDrawable
view1.setBackground(drawD); //nothing
view1.setImageResource(R.drawable.somerandomdrawable);//nothing
我不知道为什么这个观点没有显示出来。可能是可提取的“drawD”吗?如果它是这种可绘制的,那么为什么不至少显示背景色“灰色” 我在代码中设置了哪个?我曾尝试将ScaleType.Matrix转换为其他内容,例如ScaleType.Center,但似乎没有任何效果

如有任何意见或建议,将不胜感激


谢谢,几个月前我遇到了同样的问题。但我确实忘了怎么处理。解决这个问题不需要拉平机。似乎我无法在onCreate()“(FrameLayout)findviewbyd(R.id.polygraph)”内执行此调用,然后尝试将编程创建的图像视图添加到xml布局元素中。它一直给我一个空指针异常


在布局过程之后移动这两个调用,例如在onStart()或onWindowsFocusChanged()上,效果很好。图像视图被添加到xml框架布局中,这最终对我的应用程序很有效,因为我打算在布局过程之外添加图像视图。

为什么要将其膨胀?我建议首先尝试一个非常简单的布局,只使用该项,看看问题出在哪里(例如,通常您应该定义id,如
android:id=“@+id/my_id”
…阅读+id部分的功能)。通过这种方式,您可以看到问题是否出在xml中。如果不是,很可能是充气机,但你需要再次了解你在做什么以及为什么。只有当你需要通过编程创建的东西,并且你有充分的理由这样做的时候,才能充气。希望有帮助!在
frameInflate=(FrameLayout)充气器.inflate(R.layout.mframe,null)
您正在以根/父级身份传递
null
,因此您必须将
frameInflate
添加到其他
视图组
,否则您什么也看不到-您可以始终通过运行
adb shell dumpsys activity top
@pskink来检查UI树。我明白您的意思了。我想这就是问题所在。但是我能传递什么而不是null呢。所使用的父布局。让我调查一下。
adb shell dumpsys activity top
显示了什么?我不知道如何在android studio中使用adb。。抱歉@pskink。但是,我知道这就是问题所在。。我必须将整个xml布局转换为viewgroup对象,并传递它而不是Null。您可以在onCreate中执行此操作,无需自定义onWindowsFocusChanged方法。我已在onCreate()中完成findViewById调用,但是,尝试将视图添加到通过onCreate内部的findViewById调用安装的布局中,它会给出一个空指针异常@pskink
findViewById
onCreate
内返回null,但在
onWindowsFocusChanged
内不返回null??您确定在调用
setContentView(R.layout.your\u main\u layout\u file)
后调用了
findViewById
?这就是问题所在。。我在setContentView之前打电话给findViewById。这就是为什么如果依赖xml布局,setContentView应该是onCreate()上的前几行代码之一@pskink这些都是我过去遇到的错误,但由于时间太长,它们今天从我身边飞过。@pskink你似乎对android drawables有点了解。现在,我已经解决了这个问题,您知道一个好方法来缩小位于imageview中的可绘制视图吗。我正试图遵循一个教程,但没有做到预期的。
frar.addView(view1,params11); //did not work
//instead of view1.setImageDrawable
view1.setBackground(drawD); //nothing
view1.setImageResource(R.drawable.somerandomdrawable);//nothing