gpt4 book ai didi

java - Android:抽屉导航图标

转载 作者:行者123 更新时间:2023-12-01 11:09:44 26 4
gpt4 key购买 nike

我正在使用 AndroidHive: Material Design 中的模板并决定在每个抽屉导航行上添加一些图标。我已经修改了模型 NavDrawerItem,添加了图标的 getter 和 setter。

// Constructor
public NavDrawerItem(boolean showNotify, String title, int icon) {
this.showNotify = showNotify;
this.title = title;
this.icon = icon;
}

public String getTitle() {
return title;
}

public int getIcon(){
return icon;
}

public void setTitle(String title) {
this.title = title;
}

public void setIcon(int icon){
this.icon = icon;
}

它的适配器(NavigationDrawerAdapter)也进行了修改,添加了图标支持

@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
NavDrawerItem current = data.get(position);
holder.title.setText(current.getTitle());
holder.icon.setImageResource(current.getIcon());
}

class MyViewHolder extends RecyclerView.ViewHolder {
TextView title;
ImageView icon;

public MyViewHolder(View itemView) {
super(itemView);
title = (TextView) itemView.findViewById(R.id.title);
icon = (ImageView) itemView.findViewById(R.id.icon_drawer);
}
}

我知道这个抽屉是在 FragmentDrawer.java 的 onCreate 方法上添加的

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

// drawer labels
titles = getActivity().getResources().getStringArray(R.array.nav_drawer_labels);
icons = getActivity().getResources().getIntArray(R.array.nav_drawer_icon);
}

这是我的 string.xml 数组

<string-array name="nav_drawer_labels">
<item>@string/nav_item_home</item>
<item>@string/nav_item_data_visualization</item>
<item>@string/nav_item_pending_item</item>
<item>@string/nav_item_my_profile</item>
<item>@string/nav_item_about_us</item>
</string-array>

<string-array name="nav_drawer_icon">
<item>@drawable/ic_home</item>
<item>@drawable/ic_data_visualization</item>
<item>@drawable/ic_pending_item</item>
<item>@drawable/ic_profile_drawer</item>
<item>@drawable/ic_about</item>
</string-array>

我的抽屉导航项是使用 FragmentDrawer.java 中的这段代码从资源填充的

public static List<NavDrawerItem> getData() {
List<NavDrawerItem> data = new ArrayList<>();

// preparing navigation drawer items
for (int i = 0; i < titles.length; i++) {
NavDrawerItem navItem = new NavDrawerItem();
navItem.setTitle(titles[i]);
System.out.println(titles[i]);

navItem.setIcon(icons[i]);
System.out.println(icons[i]);

data.add(navItem);
}
return data;
}

我的问题是从资源填充图标,在上面的代码中 System.out.println(icons[i]);总是给我0值。我想这就是为什么我无法设置抽屉导航图标的 imageResource 的原因。

如有任何帮助,我们将不胜感激。谢谢。

最佳答案

问题所在:

icons = getActivity().getResources().getIntArray(R.array.nav_drawer_icon);

要从数组中读取资源 ID,您可以使用以下代码:

icons = new int[titles.length];
TypedArray iconsArray = getResources().obtainTypedArray(R.array.nav_drawer_icon);
for (int i = 0; i < icons.length; i++)
icons[i] = iconsArray.getResourceId(i, -1);

iconsArray.recycle();

但最好的做法可能是使用 NavigationView

关于java - Android:抽屉导航图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32515009/

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