dobeedobeee
dobeedobeee

Reputation: 61

Android. two imageViews that fits screen perfectly

Im working on a ListView and each row has two square imageViews. The drawable is given dynamically by url. The problem is that the picture does not fit screen.

the image from url is already square but i want the image to scale up or down to fit the screen.

right now it looks like first screenshot but i want them to look like the second one.

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1"
>
 
<ImageView 
    android:id="@+id/list_item_image1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop"
    />


<ImageView 
    android:id="@+id/list_item_image2"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:adjustViewBounds="true"
    android:scaleType="centerCrop"
    />
</LinearLayout>    

this is Adapter

public class ListAdapter extends ArrayAdapter<ListItem>{

private ArrayList<ListItem> items;
private Activity context;
private static LayoutInflater inflater = null;
public ImageLoader imageLoader;



public ListAdapter(Activity context, int textViewResourceId, ArrayList<ListItem> items)
{
    super(context, textViewResourceId, items);
    this.items = items;
    this.context = context;
    inflater = (LayoutInflater)context.getLayoutInflater();
    
    imageLoader = new ImageLoader(context);
}

public static class ViewHolder{
    public ImageView image1;
    public ImageView image2;
}

@Override
public View getView(int position, View convertView, ViewGroup viewGroup) {
    View rowView = convertView;
    ViewHolder holder;
    
    if (rowView == null) {
        rowView = inflater.inflate(R.layout.list_item, null);
        holder = new ViewHolder();
        holder.image1 = (ImageView)rowView.findViewById(R.id.list_item_image1);
        holder.image2 = (ImageView)rowView.findViewById(R.id.list_item_image2);
        rowView.setTag(holder);
    }
    else 
        holder = (ViewHolder)rowView.getTag();
    
    imageLoader.DisplayImage("http://dev.ts.hs.kr/jjhoon713/images/1400023976194990.jpg", holder.image1);
    imageLoader.DisplayImage("http://dev.ts.hs.kr/jjhoon713/images/1400023976194990.jpg", holder.image2);
    return rowView;
}

}

Upvotes: 1

Views: 269

Answers (4)

dobeedobeee
dobeedobeee

Reputation: 61

my problem was that layout width of list_view.xml was wrap content.

since parent of list items are list_view so weight didnt work.

i changed them to fill_parent and now it works well

Upvotes: 1

Pankaj Arora
Pankaj Arora

Reputation: 10274

take a linear layout with weightsum=2 and assign 1 weight to each imageview like below:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="wrap_content" // you can hardcode height if your view
  android:orientation="horizontal"
  android:weightSum="2">

<ImageView
    android:id="@+id/imageview1"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:adjustViewBounds="true"
    android:layout_height="wrap_content" // can change to fill parent if you hardcode the height of your view
    android:src= ""// your image if static, else set dynamically
    android:scaleType="fitxy"/>


<ImageView
    android:id="@+id/imageview2"
    android:layout_height=""// can change to fill parent if you hardcode the height of your view
    android:layout_width="0dp"
    android:adjustViewBounds="true"
    android:layout_weight="1"
    android:src="wrap_content" // your image if static, else set dynamically
    android:scaleType="fitxy"/>
</LinearLayout>

Upvotes: 1

Akash Moradiya
Akash Moradiya

Reputation: 3322

try like this,

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>

<ImageView 
    android:id="@+id/list_item_image1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:layout_weight="1"
    android:scaleType="fitXY"
    />


<ImageView 
    android:id="@+id/list_item_image2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:layout_weight="1"
    android:scaleType="fitXY"
    />
</LinearLayout>   

Upvotes: 2

Pratik Dasa
Pratik Dasa

Reputation: 7449

Try with below code:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_margin="5dp"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:weightSum="2"
    >

    <ImageView
        android:id="@+id/list_item_image1"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher"
        android:scaleType="centerCrop"
        />


    <ImageView
        android:id="@+id/list_item_image2"
        android:layout_height="wrap_content"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:src="@drawable/ic_launcher"
        android:scaleType="centerCrop"
        />
</LinearLayout>

Upvotes: 1

Related Questions