Android:适合每个屏幕的listview的每个项目
我想适合每个屏幕上的每个项目/行。但为了实现这一点,我在dp中为行的xml指定了高度和宽度。因为我指定了高度/宽度,所以每一行并不完全适合屏幕,也不适合所有类型的屏幕分辨率。我将如何做到这一点?有人能给出想法吗 这是xml文件: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
<?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的原因!!