2011-07-03 94 views
1

如何以編程方式設置控件上的圖像大小?我正在使用此代碼來更改圖像,但我如何設置大小?Android以編程方式設置圖像大小

RemoteViews updateViews = new RemoteViews(EditPreferences.this.getPackageName(), R.layout.widgetmain2); 
updateViews.setImageViewBitmap(R.id.ImageView00, ((BitmapDrawable)EditPreferences.this.getResources().getDrawable(R.drawable.normal_black_op100)).getBitmap()); 
ComponentName thisWidget = new ComponentName(EditPreferences.this, HelloWidget.class); 
AppWidgetManager manager = AppWidgetManager.getInstance(EditPreferences.this); 
manager.updateAppWidget(thisWidget, updateViews); 

在此先感謝

回答

6

這其實是一個很廣泛的問題。有多個答案吧:

  1. 通常你做它在layout.xml設置適當的佈局參數(寬度,高度)和scaleType:http://developer.android.com/reference/android/widget/ImageView.html#attr_android:scaleType。這處理了很多情況 - 每當設置圖像時,將根據其參數重新計算其縮放比例。

  2. 但有時你需要編程。但它更復雜,因爲它需要考慮屏幕密度和位圖密度,屏幕尺寸獨立像素大小等。這裏有兩點:

    • 獲得正確大小的位圖。這取決於你是否從資源加載位圖(看起來你是這樣做的)還是你手動加載它。如果你想完全控制位圖的大小,那麼你必須瞭解它是如何工作的 - 我推薦閱讀http://developer.android.com/guide/practices/screens_support.html,尤其是在運行時創建的縮放位圖對象一章。
    • 在屏幕上設置位圖的尺寸。如果您想在運行時執行此操作,並且您已經計算出物理像素所需的大小。記住,還有獨立的像素,你需要將物理像素轉換爲另一個像素(在http://developer.android.com/guide/practices/screens_support.html中查看「密度獨立像素」定義和算法以進行計算。一旦知道了物理像素,就可以將LayoutParameters應用於ImageView。像:

例子:

LinearLayout.LayoutParams layoutParams = new  
     LinearLayout.LayoutParams(width_physical_pixels, height_physical_pixels); 
imageView.setLayoutParams(layoutParams); 

重要的LinearLayout這裏只是例子應該是父類中的ImageView的 - 所以佈局PARAMS是對象容器的類型始終!而不是它們設置的對象上。

+0

我會經歷你寫的所有內容,但首先我想嘗試一下,但是它強制關閉在最後一行。你知道爲什麼嗎? RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(88,88); \t \t \t查看v = EditPreferences.this.findViewById(R.id.ImageView01); \t \t \t v.setLayoutParams(layoutParams); – erdomester

+0

什麼是錯誤信息(提示:嘗試logcat)?我猜你的視圖不是在RelativeLayout中,而是其他一些佈局,並且因爲ClassCastException而強制關閉(你會在消息中看到預期的那種類)。 –

相關問題