编辑:通过埃米尔的评论找到答案.代码最终如下:
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(left, top, right, bottom);
view.setLayoutParams(params);
Run Code Online (Sandbox Code Playgroud)
谢谢大家:D
我正在编写一个Android应用程序,我有一个动态创建的树,在其中显示ImageView元素.然而,为了安排这些图像,我使用了填充左边来正确排列它们,动态地改变填充的计算方式,以便一切都是均匀的.但是,当我这样做时,填充覆盖了左边的一些图像,即使你可以看到这个填充后面的图像,当你点击该图像时,它将评估正在使用填充的图像(最远的)左元素).我基本上想知道是否有一种方法可以以编程方式设置某些内容来执行padding对图像所做的但不可点击的内容?边距有意义,但您无法在ImageView上设置边距.
树设置如下:
-----A-----
--B--C--D--
-E-F----G--
Run Code Online (Sandbox Code Playgroud)
想象一下,每个字母都是一个ImageView,用padding动态放置.但是如果我点击B或C,D的代码将被评估,因为它的左侧填充覆盖了B和C.对于E或F,同样适用于那些,并且将对G进行评估.我无法想出一种不同的方式放置这些ImageViews.任何帮助是极大的赞赏.
所以我有一个AnimationDrawable可以在屏幕上移动一个字符.动画工作正常,但我需要在刷新屏幕时停止其余的GUI.基本上当地图移动时,游戏必须刷新屏幕以更新新位置.重绘的代码在游戏类中,动画在gridview的图像适配器中,用于显示实际的游戏板.这是麻烦的两行代码.
playerAdapter.animateLeft();
redraw();
Run Code Online (Sandbox Code Playgroud)
第一行调用适配器,该适配器具有需要发生的两个动画,两者都需要700ms.然后,重绘会更新电路板本身.问题是,重绘不等动画.我已经尝试过使用睡眠和类似的东西,但这只是暂停整个该死的东西,没有任何反应.我想我需要使用线程或处理程序,但我不确定它是如何工作的.有任何想法吗?非常感谢所有帮助:)