2011-04-20 62 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); 

希望它有助於