繁体   English   中英

调整从CustomAdapter(ArrayAdapter)填充的列表视图的项目高度

Resize item's height of a listview populated from CustomAdapter (ArrayAdapter)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我已经坚持了好几天了。

在我的主要活动中,我有一个列表视图包含在抽屉布局(android.support.v4.widget.DrawerLayout)中。

我创建了带有自定义项目的CustomAdapter类,并根据通过适配器添加到arraylist的项目为不同的布局充气。

我的问题如下:

-每行的高度自动设置为列表中包含的最重要项目的高度。

这就是我想要的:

-我希望每行的高度正确包装内容。..意思是在布局的底部和分隔线之间不要留一些空白。

这是我尝试没有成功的事情:

-在我的custom_drawer_item.xml中将父布局的layout_height设置为“ wrap_content”。

-在我的custom_drawer_item..xml中尝试了android:minHeight。

-在我的代码中,我尝试使用setLayoutParams()。 这是相关的部分:

 dataList = new ArrayList<>();
 mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
 mDrawerList = (ListView) findViewById(R.id.left_drawer);  

    dataList.add(new DrawerItem(true)); // adding a spinner to the list
    dataList.add(new DrawerItem("Pictures")); // adding a header to the list
    dataList.add(new DrawerItem("Options & Links")); // adding a header to the list
    dataList.add(new DrawerItem("Settings", R.drawable.ic_action_settings)); // adding a Link/Button to the list
    dataList.add(new DrawerItem("Help", R.drawable.ic_action_help)); // adding a Link/Button to the list
    dataList.add(new DrawerItem("About", R.drawable.ic_action_about)); // adding a Link/Button to the list

    CustomDrawerAdapter adapter = new CustomDrawerAdapter(this, this, R.layout.custom_drawer_item, dataList);
    mDrawerList.setAdapter(adapter);
    View item0 = getViewByPosition(0,mDrawerList);
    item0.getLayoutParams().height = 110;
    View item2 = getViewByPosition(2,mDrawerList);
    item2.getLayoutParams().height = 25;
    View item3 = getViewByPosition(3,mDrawerList);
    item3.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,25));
    adapter.notifyDataSetChanged();

 ...


     public View getViewByPosition(int pos, ListView listView) {                         
    final int firstListItemPosition = listView.getFirstVisiblePosition();
    final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;

    if (pos < firstListItemPosition || pos > lastListItemPosition ) {
        return listView.getAdapter().getView(pos, null, listView);
    } else {
        final int childIndex = pos - firstListItemPosition;
        return listView.getChildAt(childIndex);
    }

---------

在此先感谢所有可以提供帮助的人:)!

---------

activiy_main.xml的相关部分:

...
    <android.support.v4.widget.DrawerLayout
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!-- The main content view -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- The navigation drawer -->
    <ListView android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="fill_parent"
        android:choiceMode="singleChoice"
        android:layout_gravity="start|left"
        android:listSelector="@drawable/list_selector"
        android:divider="@color/Bluexxxx"
        android:dividerHeight="2dp"
        android:background="#ffffff"
        />
</android.support.v4.widget.DrawerLayout>
...

custom_drawer_item.xml:

<?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="wrap_content"
android:minHeight="10dp"
android:background="@drawable/list_selector" >

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/profileLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="20dp"
    android:background="@drawable/counter_bg_profile" >

    <ImageView
        android:id="@+id/picture"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginTop="0dp"
        android:contentDescription="@string/profile_picture1" />

    <TextView
        android:id="@+id/edit_profile"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/picture"
        android:layout_marginLeft="5dp"
        android:textStyle="italic"
        android:textSize="12sp" />

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_marginLeft="15dp"
        android:layout_toRightOf="@+id/picture"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/user_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="12sp"
            android:textStyle="bold" />

        <TextView
            android:id="@+id/age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/user_name"
            android:textStyle="italic"
            android:textSize="12sp" />

        <TextView
            android:id="@+id/city"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/age"
            android:textStyle="italic"
            android:textSize="12sp" />
    </RelativeLayout>
</RelativeLayout>

<LinearLayout
    android:id="@+id/spinnersLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:minHeight="20dp"
    android:layout_marginTop="0dp" >

    <RelativeLayout
        android:id="@+id/spinnerLayout"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:orientation="vertical"
        android:minHeight="20dp"
        android:layout_marginTop="0dp" >

        <TextView
            android:id="@+id/current_m_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="false"
            android:layout_centerHorizontal="true"
            android:paddingTop="5dp"
            android:text="@string/current_m_text"
            android:textColor="@color/Bluexxx"
            android:textSize="12sp"
            android:textStyle="bold" />

        <Spinner
            android:id="@+id/Spinner"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/current_m_text"
            android:prompt="@string/prompt_c"
            android:hint="@string/hint_s"
            android:spinnerMode="dialog"
            android:popupBackground="@color/background_material_light"
            android:dropDownVerticalOffset="0dp"/>
    </RelativeLayout>

</LinearLayout>

<LinearLayout
    android:id="@+id/headerLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_marginTop="0dp" >

    <TextView
        android:id="@+id/drawer_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>

<LinearLayout
    android:id="@+id/itemLayout"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:orientation="vertical"
    android:layout_marginTop="0dp"
    android:layout_marginLeft="5dp">

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="50dp" >

        <ImageView
            android:id="@+id/drawer_icon"
            android:layout_gravity="center"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/drawer_itemName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:textSize="14sp"
            android:textAppearance="?android:attr/textAppearanceSmall" />


    </LinearLayout>

</LinearLayout>
</RelativeLayout>

“ CustomDrawerAdapter”类的构造方法:

public class CustomDrawerAdapter extends ArrayAdapter<DrawerItem> {

protected Context context;
protected Activity activity;
protected List<DrawerItem> drawerItemList;
protected int layoutResID;
protected String TAG = "CustomDrawerAdapter";
protected PopupWindow pWindow;

public CustomDrawerAdapter(Activity activity, Context context, int layoutResourceID, List<DrawerItem> listItems) {
    super(context, layoutResourceID, listItems);
    this.activity = activity;
    this.context = context;
    this.drawerItemList = listItems;
    this.layoutResID = layoutResourceID;
}
1 个回复

我只是将您的custom_drawer_item.xml放入布局编辑器中,我认为是造成胃灼热的原因是:

    .
    .
    .
    <Spinner
        android:id="@+id/Spinner"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        .
        .
        .

高度为match_parent ,您的Spinner正在尝试尽可能大。

您还遇到其他一些问题,例如剪切和粘贴操作在第9行出现了一个杂散的名称空间声明。

5 在列表视图中使用customadapter重复的项目

我有一个带有listview的ToDo项目,该项目显示具有自定义适配器的SQLite中的数据。 另外,我有一个添加新任务的按钮,但是列表视图中的项目将被重复。 我的自定义适配器是 我的带有getter和setter的LT_Model } 我的UpdateUI,它将数 ...

6 根据列表视图中的项目调整卡片视图的高度

我有一个cardview作为父级布局。 在该cardview内,我正在膨胀一个项目的listview。 我现在有固定的cardview高度,但是我想根据listview中的项目动态调整高度。 这是我的父xml: 这是我的子视图的xml: 这就是我如何扩大子视图并向其显示 ...

7 静态TableViewCells调整高度,填充视图高度

我的应用程序需要做一些事情,使UITableViews变得更简单。 不过,我遇到了这个问题:我希望底部的单元格始终位于视图控制器的底部,并且我希望所有单元格都能动态调整其高度,以便每个单元格都适合于ViewController的内部,而无需滚动到查看更多单元格。 本质上,我希望3或4个大 ...

8 使用arrayadapter向列表视图动态添加项目

//在列表视图中显示Youtube视频:我正在制作一个Android应用程序以开始使用youtube api,我正在搜索编辑文本,然后在完成操作后应在我的列表视图中显示视频..我有这个问题它只在列表视图中显示5个视频,我希望它是动态的,所以当我向下滚动时,它显示5个其他视频,依此类推? ...

9 如何为CustomAdapter过滤列表视图

我正在尝试对ListView进行过滤操作。 只是从服务器获取五个数据组,并在ListView中显示五个数据。 所以我的清单中有5个不同的数据。 我想根据单个数据进行过滤。 如果只有一个数据,那么我可以使用此代码ProjectEventFragment.this.adapter.getFi ...

2014-10-13 10:12:12 1 39   android
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM