У меня есть горизонтальный список изображений, загружаемых с URL-адреса. Итак, у меня есть ImageLoader, затем адаптер, а затем моя активность. Мои макеты XML выглядит следующим образом:Динамическая ширина и высота изображения Android ImageView
mainlayout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<com.devsmart.android.ui.HorizontalListView
android:id="@+id/hlist_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="always" >
</com.devsmart.android.ui.HorizontalListView>
</LinearLayout>
Тогда мой list.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:translationY="200dp" > <!-- make this dynamic -->
<FrameLayout
android:id="@+id/mainlayout"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<ImageView
android:id="@+id/prof_pic"
android:clickable="true"
android:adjustViewBounds="true"
android:layout_width="360dp"
android:layout_height="360dp" />
<ProgressBar
android:id="@+id/img_progress"
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</FrameLayout>
<TextView
android:id="@+id/sname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textStyle="bold" />
<TextView
android:id="@+id/sdesc"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>
При такой схеме результат Рисунок A. Серое сломаны line - это изображение, мы не можем видеть его, а только те изображения (зеленый квадрат). То, что я хочу, чтобы достичь является один на рисунке B.
Таким образом, чтобы решить эту проблему, несколько я попытался добавить в мой ImageView
<ImageView
android:id="@+id/prof_pic"
android:clickable="true"
android:adjustViewBounds="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxWidth="360dp"
android:maxHeight="360dp"
android:minHeight="240dp"
android:minWidth="240dp"
/>
Но что произошло то, что, к тому времени я откройте приложение, мой список изображений выглядит так, как показано на рисунке A. Но когда прокрутка по изображениям, она немного изменилась, как на рисунке B. Но когда я прокручиваю назад к первому изображению, только первые изображения будут отображаться только или иногда мой список изображений начинается с моего второго изображения. Это действительно сумасшествие.
Есть ли способ, которым я могу достичь Рисунок B, не разрушая мой список изображений или в начале приложения, он уже отображается, как на рисунке B?
EDIT:
Это как мой адаптер выглядит следующим образом:
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder = null;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if(convertView == null){
convertView = inflater.inflate(R.layout.list_layout, null);
holder = new ViewHolder();
holder.txtShopName = (TextView) convertView.findViewById(R.id.shop_name);
holder.txtDesc = (TextView) convertView.findViewById(R.id.desc);
holder.imageView = (ImageView) convertView.findViewById(R.id.prof_pic);
holder.progBar = (ProgressBar) convertView.findViewById(R.id.img_progress);
convertView.setTag(holder);
}else{
holder = (ViewHolder) convertView.getTag();
}
imageLoader=new ImageLoader(context.getApplicationContext(), holder.progBar);
SRowItem sItem = (SRowItem) getItem(position);
holder.txtName.setText(sItem.getShopName());
holder.txtDesc.setText(sItem.getShopDesc());
imageLoader.DisplayImage(sItem.getImageUrl(), holder.imageView);
return convertView;
}
Я просто ответил на ваш другой вопрос, так что я видел этот связанный с Это. Самая важная часть информации, которую я вижу в этом вопросе, - это то, как выглядит метод getView вашего адаптера, и каков этот элемент управления, который вы используете (com.devsmart.android.ui.HorizontalListView). Похоже, что каждый элемент списка является оберткой вокруг изображения, а элемент списка специально измеряется, чтобы занимать такое же пространство. – Rich
Я отредактировал мой вопрос и включил getView моего адаптера. [com.devsmart.android.ui.HorizontalListView] (https://github.com/mtparet/HorizontalListView/blob/master/HorizontalListView.java) – elL