Intereting Posts
Android FragmentTransaction.addToBackStack путаница Как получить данные из базы данных sqlite в android и отобразить их в TextView Как создать намерение Android, которое несет данные? Начало нового действия в onCreate работает только с задержкой Не удалось найти класс com.google.android.gms.location.internal.ParcelableGeofence, на который ссылается метод glt.a Android PopupWindow showAsDropDown () не работает должным образом Есть ли в Android какая-нибудь DLL или DLL-концепция? «GoogleApiClient еще не подключен» исключение в приложении Cast Что лучше android.R или пользовательские R? Плагин Android ADT не отображается в Eclipse Использование datetime в SQLite для получения значений в этом месяце и в прошлом месяце Зачем устанавливать Android LatinIME получает отказ Почему вызов setScaleX во время жесткого зума зума вызывает мерцание? Android push-уведомление, как играть звук по умолчанию 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 ?