gpt4 book ai didi

android - 在 XML 中将 ListView Item 设置为 ScreenWidth 的一半

转载 作者:行者123 更新时间:2023-11-29 18:02:33 25 4
gpt4 key购买 nike

在 XML 中,我有一个自定义列表项 View ,我在我的 ListView 的适配器的 getView() 方法中扩展它。在 XML 中,如何使我的自定义 ListView 项目始终为屏幕宽度的一半(也许也添加一些填充)?我不认为添加另一个小部件会像我看到的建议解决方案那样工作,因为这是一个列表项。

编辑:

澄清一下,我认为这不是我的 xml 代码的问题,但这就是我的意思。如果我有这样的自定义布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:weightSum="1.0"
android:paddingTop="10dp"
>

<ImageView
android:id="@+id/item_image"
android:layout_width="218dp"
android:layout_height="212dp"
android:layout_gravity="right"
android:adjustViewBounds="true"

android:scaleType="fitCenter"
android:src="@drawable/..." />

</LinearLayout>

我有一个硬编码的宽度(我认为这不是最佳做法)所以我想将该宽度设置为屏幕总宽度的 1/2。显然,此 XML 已大大简化,但我希望它能解决问题。

如果我遗漏了一些相当明显的东西,我们深表歉意。

编辑:

添加另一个具有相同布局的布局可以解决此问题。

编辑 2:没关系。我注意到以下行为:如果我添加另一个布局,它会膨胀所有内容,因此我实际上会为每个列表项获得一半的空白空间宽度。我必须将最顶部的布局设为我猜的屏幕宽度的一半。我该如何解决这个问题?

最佳答案

主.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >

<ListView
android:id="@+id/listView1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>

<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>

项目列表.xml

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

<LinearLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#000000"
android:gravity="center"
android:orientation="horizontal" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" />

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>

主 Activity .java

public class MainActivity extends Activity {

static final String TAG_NAME = "name";
static final String TAG_ID = "id";
static String selected = "";

ListView listView;


HashMap<String, String> map;
ArrayList<HashMap<String,String>> myList;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

myList = new ArrayList<HashMap<String,String>>();
listView = (ListView) findViewById(R.id.listView1);
fillListView();
}

private void fillListView() {

myList.clear();

map = new HashMap<String, String>();
map.put(TAG_ID,"1");
map.put(TAG_NAME, "Name1");
myList.add(map);

map = new HashMap<String, String>();
map.put(TAG_ID,"2");
map.put(TAG_NAME, "Name2");
myList.add(map);

map = new HashMap<String, String>();
map.put(TAG_ID,"3");
map.put(TAG_NAME, "Name3");
myList.add(map);

map = new HashMap<String, String>();
map.put(TAG_ID,"4");
map.put(TAG_NAME, "Name4");
myList.add(map);

listView.setAdapter(new MyListAdapter(this, R.layout.itemlist, myList));

}
private class MyListAdapter extends BaseAdapter
{

private List<HashMap<String,String>> List;
private LayoutInflater mInflater;
private int layoutresource;

public MyListAdapter(Context context,int resource,List<HashMap<String, String>> myList) {
List = myList;
mInflater = LayoutInflater.from(context);
layoutresource = resource;
}

@Override
public int getCount() {
return List.size();
}

@Override
public Object getItem(int position) {
return List.get(position);
}

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

@Override
public View getView(final int position, View convertView, ViewGroup parent) {

if (convertView == null) {
convertView = mInflater.inflate(layoutresource,null);
}

final View rootView = convertView.findViewById(R.id.root);

ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView1);
final TextView name = (TextView) convertView.findViewById(R.id.textView1);

imageView.setImageDrawable(getResources().getDrawable(R.drawable.profile));
name.setTextColor(Color.parseColor("#ffffff"));
name.setText(List.get(position).get(TAG_NAME));

if ( List.get(position).get(TAG_ID).equals(selected))
name.setTextColor(Color.parseColor("#ff0000"));
else
name.setTextColor(Color.parseColor("#ffffff"));


rootView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

selected = List.get(position).get(TAG_ID);
fillListView();
}
});

name.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
rootView.performClick();
}
});

imageView.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
rootView.performClick();
}
});

return convertView;
}
}

关于android - 在 XML 中将 ListView Item 设置为 ScreenWidth 的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15104277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com