gpt4 book ai didi

java - 如何使用 Activity 正确应用和自定义全局抽屉导航

转载 作者:行者123 更新时间:2023-11-30 11:16:21 37 4
gpt4 key购买 nike

我正在开发一个大型应用程序,该应用程序最近调整了抽屉导航样式,现在我正在尝试自定义一些元素。由于其巨大的尺寸和复杂性,决定将抽屉导航调整为 Activities 和 Fragment Activites,而不是 Fragments 作为扩展标准用途。

为此,我创建了一个名为 NavDrawer 的基本抽屉 Activity ,它由所有需要使用抽屉导航的 Activity 继承/扩展。每个扩展 NavDrawer Activity 的 Activity 通过调用 super.onCreate(savedInstanceState, R.activity_layout) 添加其 layout_id 而不是执行 setContentView(R.layout_id) 来调用 NavDrawer onCreate 方法。 每当用户单击其中一个部分/ TextView 时,此基本 Activity 还会处理对其他不同 Activity 的所有 Intent 调用。

到目前为止,我设法让它工作得很好,但在自定义抽屉内 TextView 的字体时,我现在面临一个奇怪的问题。第一次启动该应用程序时,我可以看到所有没有正确样式的链接,但是选择抽屉的一个部分,导航到它并再次打开抽屉后,我看到了使用我的自定义字体正确格式化的 TextView 。

我已经为此苦苦挣扎了几天,我确信这一定是一个愚蠢的菜鸟错误,但我无法弄清楚它是什么。

这是 NavDrawer 类的 OnCreate 方法:

protected void onCreate(Bundle savedInstanceState, int resLayoutID) {
super.onCreate(savedInstanceState);
setContentView(resLayoutID);
AC = (ApplicationController)getApplicationContext();
mModel = AC.getModel();
//Setting up controls for the navigation drawer
if(AC.getModel().hasRatedApp() != null && AC.getModel().hasRatedApp()){
mLinksTitles = getResources().getStringArray(R.array.menu_links_has_rated);
}
else
mLinksTitles = getResources().getStringArray(R.array.menu_links_has_not_rated);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerContainer = (LinearLayout) findViewById(R.id.left_drawer_cont);
mDrawerList = (ListView) findViewById(R.id.menu_links);

// set a custom shadow that overlays the main content when the drawer opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

// set up the drawer's list view with items and click listener
mDrawerList.setAdapter(new ArrayAdapter<String>(AC, R.layout.drawer_list_item, mLinksTitles){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub

Typeface mFaceR = Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/Lato-Regular.ttf");
View v = super.getView(position, convertView, parent);
((TextView) v).setTypeface(Typeface.createFromAsset(getApplicationContext().getAssets(), "fonts/Lato-Light.ttf"));

return v;

}
});

我非常感谢您能提供给我的任何帮助或代码,因为我在 Android 开发方面还很陌生。

最佳答案

最后我才发现是怎么回事,实际上我在代码的后面错误地为我的 mDrawerList 设置了另一个适配器。正如我所说,愚蠢的菜鸟错误,但上面的代码对我仍然有效,希望它也能帮助其他人定制他们的抽屉导航。

关于java - 如何使用 Activity 正确应用和自定义全局抽屉导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24915345/

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