2011-04-20 228 views
9

在试图找到我想要的布局的解决方案时,我遇到了setScaleX/setScaleY方法,它们是View类的成员。setScaleX/setScaleY怎么了?

View class doc

现在看看RelativeLayout的和过滤的由API等级8的方法中,由于我开发一个应用为> = 2.2,所述方法的淡出。但是,当从“android.view.View”类中查看“继承的XML属性”属性android:scaleX/android:scaleY仍然可用。不幸的是试图使用这些属性不能正常工作和Eclipse说:“错误:没有在包‘机器人’发现属性‘的scaleX’资源标识符”

RelativeLayout class doc

所以看起来像文档矛盾和scaleX/scaleY是不可用的,直到3.0或我错过了什么?

回答

3

好吧,它看起来像是文档中的虚假表示,因为它的解释here scaleX/scaleY是使用Honeycomb添加到View类的属性,因此不幸在Froyo中不可用。

+0

将scaleX和scaleY不是该链接的讨论。 – RichieHH 2014-09-04 19:26:49

+1

已经有3年多了。似乎该网页的内容已更改... – taymless 2014-09-23 12:46:57

3

不,该文件是正确的:

public void setScaleX (float scaleX) Since: API Level 11

Froyo的是API级别8

+0

是的,当您选择低于11的任何API级别时,方法将被隐藏。但是类android.view.View中的继承的XML属性不会,因此属性仍然存在,正如您在RelativeLayout文档中所看到的文档 Btw。 [Froyo是8级](http://source.android.com/source/build-numbers.html) – taymless 2011-04-21 08:08:00

+0

是的,但它正在寻找scaleX的资源,在这种情况下,它将是setScaleX句柄,它是不可用(在构建目标期间设置)。我假设你的构建目标是2.2? 如果它是3.0,它给你这个错误,那么这是一个错误。 – 2011-04-21 08:18:12

+0

我想我们正在谈论对方;)我的构建目标是2.2,我不能使用方法和xml属性进行缩放。我对文档感到困惑,因为它表示方法不可用,但xml属性是可用的。这就是我想知道的。所以我会说“bug”是在文档中... – taymless 2011-04-21 08:25:03

5

我遇到了类似的问题,当我试图打任何动画之前设置的初始值的scaleX的观点,然而,view.setScaleX()是API Level 11根据@ Dr.J标识的。

如果您想在较早的API级别中使用蜂窝动画API,请尝试使用NineOldAndroids http://nineoldandroids.com/。基于这个开源库,有一个解决方法可以为视图提供一个初始的scaleX。

ObjectAnimator.ofFloat(getMyButton(), "scaleX", 1f, 0f).setDuration(1).start(); 
+0

辉煌想法,如果可以的话,我会给你5个+1。谢谢。 – JRun 2014-01-10 14:22:47

1

使用com.nineoldandroids.view.ViewHelper对老年人的API:

ViewHelper.setScaleY(myButton, 0.01f); 
2

NineOldAndroid根据它弃用是GitHub的链接NineOldAndroid

使用Android Support library而不是NineOldAndroid

所以你应该使用ViewCompat在的ViewHelper

代替简单的改变:

view.setScaleX(2); 

ViewHelper.setScaleX(view,2); 

到:

ViewCompat.setScaleX(view,2); 

希望它有助于