我想在我的所有Navigation Drawer
(不是片段)中创建Activities
。
棘手的部分是应该是一个普通的抽屉。即列表项必须相同。
在抽屉中,当前打开的活动应突出显示为粗体和在ListView
中已禁用,而其他活动应在正常文本中启用并启用。
经过许多例子,比如this,我提出了两种方法:
在每个活动中使用相同的导航抽屉
ListView
并动态地将当前打开的列表项设为粗体
&安培;禁用。或者,
如上面的链接所述,使用 BaseActivity ,在那里定义DrawerLayout
并在其他活动中使用它。 (问题是我不知道在BaseActivity中setContentView(layout)
。在任何地方都没有显示的活动中使用布局感觉不对。
请建议
谢谢
答案 0 :(得分:0)
允许子类活动提供内容视图布局ID。
public class BaseActivity extends Activity{
public void onCreate(Bundle b){
super.onCreate(b);
setContentView(getLayoutId())
//set up drawer content here
}
protected abstract int getLayoutId();
}
public class AppActivity extends BaseActivity{
public void onCreate(Bundle b){
super.onCreate(b)
//do not call setContentView in this subclass let the super class do that
//set up activity specific content here
}
public int getLayoutId(){
return R.layout.subactivity_layout;
}
}
为了使其正常工作,每个活动的布局必须包含相同的DrawerLayout元素。具体而言,抽屉布局的id值和用作抽屉内容的子视图在每个文件中必须相同。由于android不支持布局文件中的继承,这意味着在每个活动的布局xml中都有重复的元素。您可以使用<merge>
标记将项目中的现有布局包含到新布局文件中。