【问题标题】:Drawer Navigation (adding title of listview and images)抽屉导航(添加列表视图和图像的标题)
【发布时间】:2014-03-26 12:52:29
【问题描述】:

我使用的是 android 开发网站中的抽屉导航,但它没有在列表视图中显示标题或标题或图像,所以你能告诉我如何在 android 开发中的抽屉导航中添加标题和图像网站没有? Like this example

以下是部分代码:<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- As the main content view, the view below consumes the entire space available using match_parent in both dimensions. --> <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> <!-- android:layout_gravity="start" tells DrawerLayout to treat this as a sliding drawer on the left side for left-to-right languages and on the right side for right-to-left languages. The drawer is given a fixed width in dp and extends the full height of the container. A solid background is used for contrast with the content view. -->
<ListView android:layout_weight="1" android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="fill_parent" android:layout_gravity="start" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="1dp" android:background="@color/Black"/> </android.support.v4.widget.DrawerLayout>

【问题讨论】:

  • 使用自定义列表视图。 google 搜索同样你会发现很多例子

标签: android


【解决方案1】:

您必须使用自定义布局创建自定义适配器类,并将该适配器设置为列表视图。查看问答here

【讨论】:

    【解决方案2】:

    您可以将此库用于您的实现:From GITHUB

    它将允许您将自定义布局放入滑动菜单中。

    谢谢,

    【讨论】:

    • 你有 NavigationDrawer 可以用来做同样的事情。为什么要使用外部库?
    【解决方案3】:

    这里是解决方案:

    在您的项目中,创建一个新的 xml 文件。然后将以下代码粘贴到 xml 查看器中。之后在图形视图中您可以看到您的自定义列表视图。

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="48dp" 
    android:background="@drawable/list_selector">
    
    <ImageView
        android:id="@+id/icon"
        android:layout_width="25dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="12dp"
        android:layout_marginRight="12dp"
        android:contentDescription="@string/desc_list_item_icon"
        android:src="@drawable/ic_home"
        android:layout_centerVertical="true" />
    
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_toRightOf="@id/icon"
        android:minHeight="?android:attr/listPreferredItemHeightSmall"
        android:textAppearance="?android:attr/textAppearanceListItemSmall"
        android:textColor="@color/list_item_title"
        android:gravity="center_vertical"
        android:paddingRight="40dp"/>
    
    <TextView android:id="@+id/counter"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/counter_bg"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="8dp"
        android:textColor="@color/counter_text_color"/>
    

    然后转到您的列表视图适配器 [因为在您的导航抽屉中,您正在使用列表视图来显示菜单项。] 在 gat 视图方法中更改新创建的布局的布局 [我们现在创建的列表项]

    这是我的 getview 方法。它可能与你的 getview 方法不同。但我想这会对你有所帮助。

    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater)
                    context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.drawer_list_item_old, null);
        }
    
        ImageView imgIcon = (ImageView) convertView.findViewById(R.id.icon);
        TextView txtTitle = (TextView) convertView.findViewById(R.id.title);
        TextView txtCount = (TextView) convertView.findViewById(R.id.counter);
    
        imgIcon.setImageResource(navDrawerItems.get(position).getIcon());        
        txtTitle.setText(navDrawerItems.get(position).getTitle());
    
        // displaying count
        // check whether it set visible or not
        if(navDrawerItems.get(position).getCounterVisibility()){
            txtCount.setText(navDrawerItems.get(position).getCount());
        }else{
            // hide the counter view
            txtCount.setVisibility(View.GONE);
        }
    
        return convertView;
    }
    

    【讨论】:

    • 很高兴能帮到你:)
    • 它是一个数组,其中包含应显示在导航列表中的名称。比如首页、设置等
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多