[英]getWidth not returning different value after scaling
我正在嘗試使用setScaleX找到我所缺少的內容。
final ImageView iv = (ImageView) findViewById(R.id.imageView);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Start at 60
Log.d("test", "Before"+String.valueOf(iv.getWidth()));
iv.setScaleX((float) .5);
// Still at 60 after scale
Log.d("test", "After"+String.valueOf(iv.getWidth()));
}
});
我認為寬度會變成30.如何在縮放后獲得寬度值?
你可以通過乘以scale x or y
來解決它
final ImageView iv = (ImageView) findViewById(R.id.imageView);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Start at 60
Log.d("test", "Before"+String.valueOf(iv.getWidth()* iv.getScaleX()));
iv.setScaleX((float) .5);
// Still at 60 after scale
Log.d("test", "After"+String.valueOf(iv.getWidth()* iv.getScaleX()));
}
});
getWidth()
返回變換應用於視圖之前的寬度( setScaleX
等)。 所以這是預期的。 getDrawingRect的文檔暗示了這一點 :
These bounds do not account for any transformation properties currently set on the view,
such as setScaleX(float) or setRotation(float).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.