我将我的应用程序移动到材料设计中,但是我在其中一个活动中设置工具栏时出现问题,因为它没有layout.xml。
这是活动。
GeneralActivity.java
package com.sample.app;
import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.MenuItem;
// This class is for reusable purpose
// This class set some default configurations for all applications
// All activities in this Application except MainActivity extend this class
// so that the application can keep the same layout display
public class GeneralActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
// enable icon for up navigation
ActionBar actionBar = getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// set home button as back button
switch (item.getItemId()){
case android.R.id.home:
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
这是我的 style.xml ,适用于素材设计应用。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="AppTheme" parent="Base.AppTheme">
</style>
<style name="Base.AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/md_green_500</item>
<item name="colorPrimaryDark">@color/md_green_600</item>
<item name="colorAccent">@color/md_pink_500</item>
<item name="colorControlHighlight">@color/md_green_500_25</item>
<item name="android:windowBackground">@color/md_white_1000</item>
</style>
<style name="ToolbarTheme" parent="AppTheme">
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColorSecondary">@color/md_grey_300</item>
</style>
<style name="NavigationViewTheme" parent="AppTheme">
<item name="textAppearanceListItem">@style/TextAppearance.AppCompat.Body2</item>
</style>
</resources>
请提前帮助我。
答案 0 :(得分:0)
如果要将该活动用作基本活动
,则需要覆盖setContetnView@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
答案 1 :(得分:0)
首先,对于没有布局的活动,您需要oncreateview mathod来显示调用此活动时的内容。 还有一件事,是否在manifest.xml中提到了您的活动?如果是,则默认情况下将获取应用程序标记的操作栏。 如果没有,那么你可以特别声明。 试试看......
答案 2 :(得分:0)
首先,您必须使用AppCompatActivity
代替Activity
。
public class GeneralActivity extends AppCompatActivity{
}
然后您必须为您的活动设置不同的布局。您可以使用如下的somenthing:
public class GeneralActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setMyLayout();
}
protected abstract void setMyLayout();
}
在您的活动中,您可以实施该方法:
@Override
protected abstract void setMyLayout(){
setContentView(myLayout);
//... if you need to get your Toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.myToolbar);
setSupportActionBar(toolbar);
...
}
如果您的布局没有工具栏,则必须更改主题:
<style name="AppTheme.Toolbar">
<item name="colorPrimary">@color/mycolor</item>
<item name="colorPrimaryDark">@color/...</item>
<item name="colorAccent">@color/...</item>
</style>