android从url加载图像与从文件加载图像不同

android从url加载图像与从文件加载图像不同,android,Android,我跟随从url加载图像 这就是活动 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_

我跟随从url加载图像

这就是活动

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"
        android:id="@+id/imageViewImg3"/>

</LinearLayout>

</RelativeLayout>

如果从文件加载图像,则这是Binderdata

public class trang3Binderdata extends BaseAdapter {
static final String KEY_IMG = "img";
LayoutInflater inflater;
List<HashMap<String,String>> imgHashmap;
ViewHolder holder;
public trang3Binderdata() {
    // TODO Auto-generated constructor stub
}

public trang3Binderdata(Activity act, List<HashMap<String,String>> map) {
    this.imgHashmap = map;
    inflater = (LayoutInflater) act
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount() {
    // TODO Auto-generated method stub

    return imgHashmap.size();
}

public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null){
        vi = inflater.inflate(R.layout.list_img, null);
        holder = new ViewHolder();
        holder.ivImgtrang3 =(ImageView)vi.findViewById(R.id.imageViewImg3);
        vi.setTag(holder);
    }
    else{

        holder = (ViewHolder)vi.getTag();
    }

    String uri = "drawable/"+ imgHashmap .get(position).get(KEY_IMG);
    int imageResource = vi.getContext().getApplicationContext().getResources().getIdentifier(uri, null, vi.getContext().getApplicationContext().getPackageName());
    Drawable image = vi.getContext().getResources().getDrawable(imageResource);
    holder.ivImgtrang3.setImageDrawable(image);

    return vi;
}

static class ViewHolder{
    ImageView ivImgtrang3;
}
公共类trang3Binderdata扩展BaseAdapter{
静态最终字符串键\u IMG=“IMG”;
充气机;
列出imgHashmap;
视窗座;
公共trang3Binderdata(){
//TODO自动生成的构造函数存根
}
公共交易数据(活动法案、列表地图){
this.imgHashmap=map;
充气机=(充气机)法
.getSystemService(上下文布局\充气机\服务);
}
public int getCount(){
//TODO自动生成的方法存根
返回imgHashmap.size();
}
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回null;
}
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回0;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null){
vi=充气机充气(R.layout.list\u img,空);
holder=新的ViewHolder();
holder.ivImgtrang3=(ImageView)vi.findViewById(R.id.imageViewImg3);
vi.setTag(支架);
}
否则{
holder=(ViewHolder)vi.getTag();
}
字符串uri=“drawable/”+imgHashmap.get(position.get(KEY\u IMG));
int-imageResource=vi.getContext().getApplicationContext().getResources().getIdentifier(uri,null,vi.getContext().getApplicationContext().getPackageName());
可绘制图像=vi.getContext().getResources().getDrawable(imageResource);
支架。ivImgtrang3。可设置图像绘制(图像);
返回vi;
}
静态类视窗夹{
ImageView ivImgtrang3;
}
}

这就是结果

这是Binderdata从url加载图像

public class trang3Binderdata extends BaseAdapter {
static final String KEY_IMG = "img";
LayoutInflater inflater;
List<HashMap<String,String>> imgHashmap;
ViewHolder holder;
public trang3Binderdata() {
    // TODO Auto-generated constructor stub
}

public trang3Binderdata(Activity act, List<HashMap<String,String>> map) {
    this.imgHashmap = map;
    inflater = (LayoutInflater) act
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

public int getCount() {
    // TODO Auto-generated method stub
    return imgHashmap.size();
}

public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return null;
}

public long getItemId(int position) {
    // TODO Auto-generated method stub
    return 0;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null){
        vi = inflater.inflate(R.layout.list_img, null);
        holder = new ViewHolder();
        holder.ivImgtrang3 =(ImageView)vi.findViewById(R.id.imageViewImg3);
        vi.setTag(holder);
    }
    else{

        holder = (ViewHolder)vi.getTag();
    }

    int loader = R.drawable.skorea;
    String uri = imgHashmap .get(position).get(KEY_IMG);
    ImageLoader imgLoader = new ImageLoader(vi.getContext().getApplicationContext());
    imgLoader.DisplayImage(uri, loader, holder.ivImgtrang3);

    return vi;
}

static class ViewHolder{
    ImageView ivImgtrang3;
}
公共类trang3Binderdata扩展BaseAdapter{
静态最终字符串键\u IMG=“IMG”;
充气机;
列出imgHashmap;
视窗座;
公共trang3Binderdata(){
//TODO自动生成的构造函数存根
}
公共交易数据(活动法案、列表地图){
this.imgHashmap=map;
充气机=(充气机)法
.getSystemService(上下文布局\充气机\服务);
}
public int getCount(){
//TODO自动生成的方法存根
返回imgHashmap.size();
}
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回null;
}
公共长getItemId(int位置){
//TODO自动生成的方法存根
返回0;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null){
vi=充气机充气(R.layout.list\u img,空);
holder=新的ViewHolder();
holder.ivImgtrang3=(ImageView)vi.findViewById(R.id.imageViewImg3);
vi.setTag(支架);
}
否则{
holder=(ViewHolder)vi.getTag();
}
int loader=R.drawable.skorea;
字符串uri=imgHashmap.get(位置).get(键\u IMG);
ImageLoader imgLoader=新的ImageLoader(vi.getContext().getApplicationContext());
DisplayImage(uri、加载程序、holder.ivImgtrang3);
返回vi;
}
静态类视窗夹{
ImageView ivImgtrang3;
}
}

这就是结果

我想从url加载图像,就像从文件加载图像一样。但结果不一样。为什么呢?

请帮帮我。感谢您阅读

只要更改布局xml以满足您的需要,我将删除RelativeLayout,因为您只有一个图像视图,因此我认为这是不必要的。您可能需要在图像中设置缩放类型以达到最佳缩放视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent" // change width to match parent 
        android:layout_height="wrap_content"  // change height to specific number or let it as its wrap_content
        android:adjustViewBounds="true"
        android:id="@+id/imageViewImg3"/>

</LinearLayout>

只要更改布局xml以满足您的需要,我将删除RelativeLayout,因为我认为这是不必要的,因为您只有一个图像视图。您可能需要在图像中设置scaleType以达到最佳比例视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent" // change width to match parent 
        android:layout_height="wrap_content"  // change height to specific number or let it as its wrap_content
        android:adjustViewBounds="true"
        android:id="@+id/imageViewImg3"/>

</LinearLayout>


是。从url加载时图像的大小与从文件加载时图像的大小不同。你能修复它吗?提供你的xml文件吗?包括R.id.imageViewImg3Yes。从url加载时图像的大小与从文件加载时图像的大小不同。你能修复它吗?提供你的xml文件吗?包括R.id.imageViewImg3i跟随您,但图像中心和大小不变。如果改变android:layout\u height=“number dp”图像的大小,它仍然很小。但是我想要自动的。你有什么想法吗?试着改变你的线性布局宽度以匹配你的父母,高度为你想要的任何数字,比如说100dp-150dp就好了别忘了添加scaletype,android:adjustViewBounds=“true”android:scaletype=“centerCrop”是否有效?无论您以何种方式面对xml格式的图像大小问题,都可以根据需要使用特定的数字来调整大小,或者通过设置宽度、高度、包裹内容或匹配父对象来调整大小,这与从文件加载图像时不同。我尝试你给我看的任何东西。我不知道为什么。可能是我尝试了另一个从URL加载图像的教程,我也跟着你们,但图像的中心和大小并没有改变。如果改变android:layout\u height=“number dp”图像的大小,它仍然很小。但是我想要自动的。你有什么想法吗?试着改变你的线性布局宽度以匹配你的父母,高度为你想要的任何数字,比如说100dp-150dp就好了别忘了添加scaletype,android:adjustViewBounds=“true”android:scaletype=“centerCrop”是否有效?无论您以何种方式面对xml格式的图像大小问题,都可以根据需要使用特定的数字来调整大小,或者通过设置宽度、高度、包裹内容或匹配父对象来调整大小,这与从文件加载图像时不同。我尝试你给我看的任何东西。我不知道为什么。我可以尝试另一个教程从url加载图像吗