Android:适合每个屏幕的listview的每个项目

Android:适合每个屏幕的listview的每个项目,android,listview,Android,Listview,我想适合每个屏幕上的每个项目/行。但为了实现这一点,我在dp中为行的xml指定了高度和宽度。因为我指定了高度/宽度,所以每一行并不完全适合屏幕,也不适合所有类型的屏幕分辨率。我将如何做到这一点?有人能给出想法吗 这是xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="schemas.android.com/apk/res/android" android:layout_wi

我想适合每个屏幕上的每个项目/行。但为了实现这一点,我在dp中为行的xml指定了高度和宽度。因为我指定了高度/宽度,所以每一行并不完全适合屏幕,也不适合所有类型的屏幕分辨率。我将如何做到这一点?有人能给出想法吗

这是xml文件:

   <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
android:layout_width="1024dip"
android:layout_height="480dip"
android:orientation="vertical" >
<TextView android:layout_width="1024dip"
android:layout_height="480dip" 
android:text="ViewSwitcher" 
android:textSize="20sp" 
android:gravity="center" 
android:padding="10dip" 
android:background="#404040" 
android:id="@+id/textView" /> 
</LinearLayout> 
public class Demo extends Activity {

LazyAdapter adapter;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_layout);

    lv = (ListView) findViewById(R.id.list);
    ArrayList<String> songsList = new ArrayList<String>();

        songsList.add("Song 1");
        songsList.add("Song 2");
        songsList.add("Song 3");

        adapter=new LazyAdapter(this, songsList);        
        lv.setAdapter(adapter);
}   

 public void onListItemClick(ListView l, View v, int position, long id) {

        //Do Something here
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#b5b5b5"
    android:textSize="20sp"
    android:dividerHeight="1dp"/>

</RelativeLayout>
public class LazyAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<String> data;
private static LayoutInflater inflater=null;

public LazyAdapter(Activity a, ArrayList<String> d) {

    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)

    vi = inflater.inflate(R.layout.lazyadapter_layout, null);

    TextView title = (TextView)vi.findViewById(R.id.title); // title

    String song;
    song = data.get(position);

    // Setting all values in listview
    title.setText(song);

    return vi;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="480dp"
        android:background="#404040"
        android:gravity="center"
        android:text="ViewSwitcher"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

</LinearLayout>


提前感谢。

您是否尝试过这两种方法,而不是指定dpi的

    android:layout_height="fill_parent" 
    android:layout_width="fill_parent"

您是否曾与懒洋洋一起工作过

试试这个

Demo.java:

   <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
android:layout_width="1024dip"
android:layout_height="480dip"
android:orientation="vertical" >
<TextView android:layout_width="1024dip"
android:layout_height="480dip" 
android:text="ViewSwitcher" 
android:textSize="20sp" 
android:gravity="center" 
android:padding="10dip" 
android:background="#404040" 
android:id="@+id/textView" /> 
</LinearLayout> 
public class Demo extends Activity {

LazyAdapter adapter;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_layout);

    lv = (ListView) findViewById(R.id.list);
    ArrayList<String> songsList = new ArrayList<String>();

        songsList.add("Song 1");
        songsList.add("Song 2");
        songsList.add("Song 3");

        adapter=new LazyAdapter(this, songsList);        
        lv.setAdapter(adapter);
}   

 public void onListItemClick(ListView l, View v, int position, long id) {

        //Do Something here
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#b5b5b5"
    android:textSize="20sp"
    android:dividerHeight="1dp"/>

</RelativeLayout>
public class LazyAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<String> data;
private static LayoutInflater inflater=null;

public LazyAdapter(Activity a, ArrayList<String> d) {

    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)

    vi = inflater.inflate(R.layout.lazyadapter_layout, null);

    TextView title = (TextView)vi.findViewById(R.id.title); // title

    String song;
    song = data.get(position);

    // Setting all values in listview
    title.setText(song);

    return vi;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="480dp"
        android:background="#404040"
        android:gravity="center"
        android:text="ViewSwitcher"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

</LinearLayout>
公共类演示扩展活动{
懒散适配器;
ListView lv;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.demo_布局);
lv=(ListView)findViewById(R.id.list);
ArrayList songsList=新的ArrayList();
歌曲列表。添加(“歌曲1”);
歌曲列表。添加(“歌曲2”);
歌曲列表。添加(“歌曲3”);
adapter=新的LazyAdapter(此,songsList);
低压设置适配器(适配器);
}   
public void onListItemClick(列表视图l、视图v、整数位置、长id){
//在这里做点什么
}
}
demo\u layout.xml:

   <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
android:layout_width="1024dip"
android:layout_height="480dip"
android:orientation="vertical" >
<TextView android:layout_width="1024dip"
android:layout_height="480dip" 
android:text="ViewSwitcher" 
android:textSize="20sp" 
android:gravity="center" 
android:padding="10dip" 
android:background="#404040" 
android:id="@+id/textView" /> 
</LinearLayout> 
public class Demo extends Activity {

LazyAdapter adapter;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_layout);

    lv = (ListView) findViewById(R.id.list);
    ArrayList<String> songsList = new ArrayList<String>();

        songsList.add("Song 1");
        songsList.add("Song 2");
        songsList.add("Song 3");

        adapter=new LazyAdapter(this, songsList);        
        lv.setAdapter(adapter);
}   

 public void onListItemClick(ListView l, View v, int position, long id) {

        //Do Something here
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#b5b5b5"
    android:textSize="20sp"
    android:dividerHeight="1dp"/>

</RelativeLayout>
public class LazyAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<String> data;
private static LayoutInflater inflater=null;

public LazyAdapter(Activity a, ArrayList<String> d) {

    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)

    vi = inflater.inflate(R.layout.lazyadapter_layout, null);

    TextView title = (TextView)vi.findViewById(R.id.title); // title

    String song;
    song = data.get(position);

    // Setting all values in listview
    title.setText(song);

    return vi;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="480dp"
        android:background="#404040"
        android:gravity="center"
        android:text="ViewSwitcher"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

</LinearLayout>

LazyAdapter.java:

   <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
android:layout_width="1024dip"
android:layout_height="480dip"
android:orientation="vertical" >
<TextView android:layout_width="1024dip"
android:layout_height="480dip" 
android:text="ViewSwitcher" 
android:textSize="20sp" 
android:gravity="center" 
android:padding="10dip" 
android:background="#404040" 
android:id="@+id/textView" /> 
</LinearLayout> 
public class Demo extends Activity {

LazyAdapter adapter;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_layout);

    lv = (ListView) findViewById(R.id.list);
    ArrayList<String> songsList = new ArrayList<String>();

        songsList.add("Song 1");
        songsList.add("Song 2");
        songsList.add("Song 3");

        adapter=new LazyAdapter(this, songsList);        
        lv.setAdapter(adapter);
}   

 public void onListItemClick(ListView l, View v, int position, long id) {

        //Do Something here
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#b5b5b5"
    android:textSize="20sp"
    android:dividerHeight="1dp"/>

</RelativeLayout>
public class LazyAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<String> data;
private static LayoutInflater inflater=null;

public LazyAdapter(Activity a, ArrayList<String> d) {

    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)

    vi = inflater.inflate(R.layout.lazyadapter_layout, null);

    TextView title = (TextView)vi.findViewById(R.id.title); // title

    String song;
    song = data.get(position);

    // Setting all values in listview
    title.setText(song);

    return vi;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="480dp"
        android:background="#404040"
        android:gravity="center"
        android:text="ViewSwitcher"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

</LinearLayout>
公共类LazyAdapter扩展了BaseAdapter{
私人活动;
私有数组列表数据;
专用静态充气机=空;
公共LazyAdapter(活动a,ArrayList d){
活动=a;
数据=d;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
}
public int getCount(){
返回data.size();
}
公共对象getItem(int位置){
返回位置;
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null)
vi=充气机。充气(R.layout.lazyadapter\u布局,空);
TextView title=(TextView)vi.findviewbyd(R.id.title);//title
弦乐曲;
宋=数据。获取(位置);
//在listview中设置所有值
标题:setText(歌曲);
返回vi;
}
}
lazyadapter\u layou.xml:

   <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="schemas.android.com/apk/res/android"
android:layout_width="1024dip"
android:layout_height="480dip"
android:orientation="vertical" >
<TextView android:layout_width="1024dip"
android:layout_height="480dip" 
android:text="ViewSwitcher" 
android:textSize="20sp" 
android:gravity="center" 
android:padding="10dip" 
android:background="#404040" 
android:id="@+id/textView" /> 
</LinearLayout> 
public class Demo extends Activity {

LazyAdapter adapter;
ListView lv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.demo_layout);

    lv = (ListView) findViewById(R.id.list);
    ArrayList<String> songsList = new ArrayList<String>();

        songsList.add("Song 1");
        songsList.add("Song 2");
        songsList.add("Song 3");

        adapter=new LazyAdapter(this, songsList);        
        lv.setAdapter(adapter);
}   

 public void onListItemClick(ListView l, View v, int position, long id) {

        //Do Something here
    }

}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">

<ListView
    android:id="@+id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:divider="#b5b5b5"
    android:textSize="20sp"
    android:dividerHeight="1dp"/>

</RelativeLayout>
public class LazyAdapter extends BaseAdapter {

private Activity activity;
private ArrayList<String> data;
private static LayoutInflater inflater=null;

public LazyAdapter(Activity a, ArrayList<String> d) {

    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

public long getItemId(int position) {
    return position;
}

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)

    vi = inflater.inflate(R.layout.lazyadapter_layout, null);

    TextView title = (TextView)vi.findViewById(R.id.title); // title

    String song;
    song = data.get(position);

    // Setting all values in listview
    title.setText(song);

    return vi;
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

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

    <TextView
        android:id="@+id/title"
        android:layout_width="fill_parent"
        android:layout_height="480dp"
        android:background="#404040"
        android:gravity="center"
        android:text="ViewSwitcher"
        android:textColor="#FFFFFF"
        android:textSize="20sp" />

</LinearLayout>

希望这对你有帮助


有关更多详细信息,请使用线性布局,使用加权和功能,您可以在任何程度上分割scren分辨率。

否。它不起作用。这就是为什么我要为线性布局和文本视图指定宽度/高度?仅为线性布局,它不会产生任何影响。如果我给文本视图,它将反映。我可以使用填充父对象进行线性布局。抱歉,是测试代码…嗯。它在使用listview时不起作用。因此,我现在使用viewpager并将其自定义为垂直:这是我的一排。xml@eager-添加有问题的xml文件,以便每个人第一眼看到。。!!!通过为布局指定固定高度,您可能无法为每个android设备获得所需的输出。为此,请使用fill_parent.:)对listview使用fill\u父项无效!!!!请用xml给出您的listview代码,这样可以给您最好的答案。谢谢您的代码。但我必须指定宽度/高度。所以我现在使用viewpager并将其自定义为垂直。@渴望-我会先给你这个建议…但我想让我先尝试列表@急切-如果您想指定宽度/高度,请在TextView中的lazyadapter_layout.xml中指定@nilayonAndrod-很抱歉回复晚了。我不想指定宽度和高度。但如果我使用布局,我必须指定。我尝试使用LazyAdapterXML。这就是我放弃使用listview的原因!!