Intereting Posts
WebViewCoreThread, используемый admob AdView, использует высокий CPU даже в том случае, если родительская активность приостановлена ​​ Как отлаживать, какие тревоги AlarmManager запускаются из вашего приложения? Как должны быть организованы данные для SimpleExpandableListAdapter Ширина привязки Android к вкладкам Как остановить вспышку камеры при запуске автофокуса? Как рисовать кривую через точки дерева в Android? OnTouchListener on Activity никогда не вызывает Разнообразие ошибок HTTP при общении с сервером из приложения Android Android: fitsSystemWindows не работает Выполнить код, когда приложение Android закрыто / отправлено на задний план Служба привязки к BroadcastReceiver Невозможно настроить приложение приложения для биллинга Android в приложении HTTP-запросы с базовой аутентификацией Настройка AVD на те же спецификации, что и на физическом устройстве Точки останова и исключения перестали нормально работать, xamarin android

Android: как программно установить ширину ImageView внутри TableRow

Как программно установить ширину ImageView внутри TableRow? Я НЕ хочу, чтобы ширина ячейки менялась, и только ширина изображения внутри ячейки.

Макет: (для уменьшения кода используется многоточие)

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal"> <TableRow android:gravity="center_vertical"> <Button>...</Button> <ImageView android:id="@+id/fruit" android:layout_width="120dp" android:layout_height="44dp" android:src="@drawable/apple" android:scaleType="matrix" ></ImageView> <Button>...</Button> </TableRow> <TableRow>...</TableRow> </TableLayout> 

Ява:

 ImageView iv = (ImageView) findViewById(R.id.fruit); LayoutParams frame = iv.getLayoutParams(); frame.width = 100; iv.setLayoutParams(frame); 

EDIT : я хочу, чтобы изображение было обрезано внутри границ, установленных i, и чтобы ячейка таблицы была исходной. Ниже приведен пример кода, который работал на меня благодаря предложению парага:

 Bitmap bmp = BitmapFactory.decodeResource(getResources() , R.drawable.apple); int width = 50; int height = 44; Bitmap resizedbitmap = Bitmap.createBitmap(bmp, iv.getScrollX(), iv.getScrollY(), width, height); iv.setImageBitmap(resizedbitmap); 

Solutions Collecting From Web of "Android: как программно установить ширину ImageView внутри TableRow"

Другой способ: u изменить размер растрового изображения

  ImageView img=(ImageView)findViewById(R.id.ImageView01); Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.sc01); int width=200; int height=200; Bitmap resizedbitmap=Bitmap.createScaledBitmap(bmp, width, height, true); img.setImageBitmap(resizedbitmap); 

Вы хотите масштабировать изображение? Или обрезать его?

Чтобы масштабировать, попробуйте ImageView. SetImageMatrix и Matrix. PreScale .

Если вы не хотите определять Матрицы, вы можете попробовать Rects (ограничивающие поля). Получите исходный прямоугольник с помощью ImageView. GetDrawingRect, а затем определите все, что хотите, и используйте Matrix. SetRectToRect для создания вашей матрицы изображений.

В противном случае вы пробовали ImageView. SetMaxWidth ?