Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使Android ListView行适合其包含的图像,而不是更大_Android_Android Layout_Listview_Android Listview - Fatal编程技术网

使Android ListView行适合其包含的图像,而不是更大

使Android ListView行适合其包含的图像,而不是更大,android,android-layout,listview,android-listview,Android,Android Layout,Listview,Android Listview,我有一个Android列表,我想让我的“ListView”的行维度与其中的实际图像相匹配。当前该行大于其内部的图像,因此会扭曲列表 请参阅下文: My activity (ActivitytToyotaOwnersMainListView.java, related code only): public class ActivitytToyotaOwnersMainListView extends Activity { public ListView listView;

我有一个Android列表,我想让我的“ListView”的行维度与其中的实际图像相匹配。当前该行大于其内部的图像,因此会扭曲列表

请参阅下文:

My activity (ActivitytToyotaOwnersMainListView.java, related code only):


public class ActivitytToyotaOwnersMainListView extends Activity {


    public ListView listView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_toyota_owners_main);

        ListViewItemModelLoader.LoadModel();

        listView = (ListView) findViewById(R.id.toyota_owners_main_list_view);

        if (listView!=null)
        {

        String[] ids = new String[ListViewItemModelLoader.Items.size()];
        for (int i= 0; i < ids.length; i++){

            ids[i] = Integer.toString(i+1);
        }

        ItemAdapter adapter = new ItemAdapter(this,R.layout.main_activity_view_icons, ids);
        listView.setAdapter(adapter);
        }
        else
        {   Log.d("***Class ActivitytToyotaOwnersMainListView, listView: ",
                String.valueOf(listView));

        }


        // OnItemClickListener
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
......

My activity(ActivityToYotaOwnersMainListView.java,仅限相关代码):
公共类活动ToYotaOwnersMainListView扩展活动{
公共列表视图列表视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u toyota\u owners\u main);
ListViewItemModelLoader.LoadModel();
listView=(listView)findViewById(R.id.toyota\u车主\u主视图\u列表\u视图);
如果(listView!=null)
{
String[]ids=新字符串[ListViewItemModelLoader.Items.size()];
for(int i=0;i
ActivityToToyotaOwnersMainListView布局xml(activity_toyota_owners_main.xml)


My ItemAdapter(用于在列表中显示图像的自定义适配器)

package com.toyota.toyotaownerspoc.main;
导入android.content.Context;
导入android.graphics.drawable.drawable;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.AbsListView.LayoutParams;
导入java.io.InputStream;
丰田丰田汽车有限公司;
公共类ItemAdapter扩展了ArrayAdapter{
私人最终语境;
私有最终字符串[]id;
私有最终内部资源ID;
公共项适配器(上下文上下文、int textViewResourceId、字符串[]对象){
超级(上下文、textViewResourceId、对象);
this.context=上下文;
id=objects;
this.rowResourceId=textViewResourceId;
}
@抑制警告(“最终”)
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图行视图=空;
//获取输入流
InputStream ims=null;
试一试{
LayoutFlater充气器=(LayoutFlater)上下文
.getSystemService(上下文布局\充气机\服务);
如果(充气机!=null){
rowView=充气器。充气(rowResourceId,父项,false);
如果(行视图!=null){
ImageView ImageView=(ImageView)行视图
.FindView视图(R.id.main\u活动\u图标\u图像\u视图);
如果(imageView!=null){
intid=Integer.parseInt(id[position]);
字符串resourceId=ListViewItemModelLoader.GetbyId(id).resourceFile;
//将图像加载为可绘制
int resource=context.getResources().getIdentifier(
resourceId,“可提取”,
getPackageName());
Drawable Drawable=context.getResources().getDrawable(
资源);
//将图像设置为ImageView
imageView.setImageDrawable(可绘制);
}否则{
Log.d(“***类ItemAdapter,imageView:”,
字符串.valueOf(imageView));
}
}否则{
Log.d(“***类ItemAdapter,行视图:”,
String.valueOf(rowView));
}
}否则{
Log.d(“***类ItemAdapter,充气机:”,
字符串。值(充气器));
}
}捕获(异常exc){
Log.d(“***类ItemAdapter,getView(int位置,视图转换视图,视图组父级):”,
exc.getMessage());
}最后{
返回行视图;
}
}
}
每个ListView行中的图像布局(main\u activity\u view\u icons.xml)



谢谢

我注意到行布局的RelativeLayout中有minHeight参数。请尝试删除该参数。 另外,尝试将相对布局的布局宽度/高度以及图像视图设置为“包装内容”

希望这有帮助。

你可以用这个

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:minHeight="64dp">
<ImageView 
    android:id="@+id/main_activity_icons_image_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</ImageView>

</RelativeLayout>

使用

android:scaleType="fitXY"
在ImageView中,删除多余的空间


您可以缩放图像以适应屏幕,因为您的图像比屏幕宽度大。

我也遇到了类似的问题,最终过于明确地指定了ImageView的高度。基本上,ImageView布局高度应指定与布局高度的行高相同的值属性。在您的情况下,该属性如下所示:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:minHeight="64dp">
    <ImageView 
        android:id="@+id/main_activity_icons_image_view"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        android:scaleType="fitCenter">        
   </ImageView>
</RelativeLayout>


fitCenter的scaleType并不是为我自己做的。

My new main\u activity\u view\u icons.xml,宽度和高度设置为“包装内容”:
我更改了布局,但仍然没有更改,图像/图像视图周围似乎有一个隐含的填充,尽管我的代码或布局都没有指定填充。还要注意的是,我的图像实际上要大得多,框架实际上是自动调整图像大小的。好的,这可能是一个很长的过程,但它对我来说有一些帮助试着改变一下关系
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:minHeight="64dp">
<ImageView 
    android:id="@+id/main_activity_icons_image_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

</ImageView>

</RelativeLayout>
android:scaleType="fitXY"
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_vertical"
    android:minHeight="64dp">
    <ImageView 
        android:id="@+id/main_activity_icons_image_view"
        android:layout_width="match_parent"
        android:layout_height="64dp"
        android:scaleType="fitCenter">        
   </ImageView>
</RelativeLayout>