Android: ImageView in Fragment (пакет совместимости): невозможно установить ширину и высоту по коду - PullRequest
1 голос
/ 12 октября 2011

Я разрабатываю приложение для платформы Android 2.3.3 и импортирую пакет совместимости для использования класса Fragment. Прежде всего, я не смог запустить первый тривиальный пример здесь http://developer.android.com/guide/topics/fundamentals/fragments.html

приложение вылетает при попытке раздувать фрагмент.

Я «решил» жесткое кодирование содержимого фрагмента вместо использования XML-файла - я создаю ImageView внутри onCreateView:

public static class SampleFragment extends Fragment 
{
  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
   {        
     ImageView image = new ImageView(getActivity());
     image.setImageResource(R.drawable.sample_image);
     image.setLayoutParams(new FrameLayout.LayoutParams(120, 30, Gravity.CENTER));
     return image;
  }
}

<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background">
<fragment 
    android:name="org.blackimp.ListenActivity$SampleFragment"
    android:id="@+id/noise_meter_fragment"
    android:layout_weight="0"           
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
...
</LinearLayout>

проблема в том, что полностью игнорирует ширину и высоту макета , заданные кодом - фактический код преобразует dp в px перед вызовом setLayoutParams. это расширяет изображение, чтобы заполнить всю ширину фрагмента.

  1. Как настроить ширину и высоту изображения, то есть масштабировать его?
  2. есть ли способ заставить его работать, надувая и описывая содержимое фрагмента в xml с помощью пакета совместимости - да, я расширил FragmentActivity, но он все равно не работает -?

спасибо

1 Ответ

0 голосов
/ 12 октября 2011

Вы должны понимать использование фрагментов здесь. Вы включаете фрагмент в свой XML с шириной, установленной в «fill_parent». Фрагмент в этом случае просто возвращает ImageView. Это как вы бы поместили ImageView прямо в ваш макет. Вы должны установить информацию о пикселях в XML-фрагменте, или вы добавляете фрагмент программно.

Вы можете найти больше информации о масштабировании ImageViews здесь .

...