Android 如何在不使用setContentView方法的情况下在“活动”中设置工具栏
我正在将我的应用程序移动到material design中,但我在其中一个活动中设置工具栏时遇到问题,因为它没有layout.xml 这就是活动 GeneralActivity.javaAndroid 如何在不使用setContentView方法的情况下在“活动”中设置工具栏,android,android-toolbar,android-appcompat,Android,Android Toolbar,Android Appcompat,我正在将我的应用程序移动到material design中,但我在其中一个活动中设置工具栏时遇到问题,因为它没有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 i
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>
@颜色/md_绿色_500
@颜色/md_绿色_600
@颜色/md_粉红色_500
@颜色/md_绿色_500_25
@颜色/md_白色_1000
@android:彩色/白色
@颜色/md\U灰色\U 300
@样式/文本外观.AppCompat.body 2
请帮助我,提前谢谢。如果要将该活动用作基本活动,则需要覆盖SetContentView
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
如果要将该活动用作基本活动,则需要重写SetContentView
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
首先,对于没有布局的活动,您需要oncreateview方法,以便在调用此活动时显示一些内容。 还有一件事,manifest.xml中是否提到了您的活动?如果是,则默认情况下,它将获得此处提到的应用程序标记的操作栏。 如果没有,你可以在那里申报。
尝试一下…首先,对于没有布局的活动,您需要oncreateview方法,以便在调用此活动时显示一些内容。 还有一件事,manifest.xml中是否提到了您的活动?如果是,则默认情况下,它将获得此处提到的应用程序标记的操作栏。 如果没有,你可以在那里申报。
尝试一下…首先,您必须使用
AppCompatActivity
而不是Activity
public class GeneralActivity extends AppCompatActivity{
}
然后你必须为你的活动设置不同的布局。您可以使用以下内容:
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>
@颜色/霉色
@颜色/。。。
@颜色/。。。
首先,您必须使用AppCompatActivity
而不是Activity
public class GeneralActivity extends AppCompatActivity{
}
然后你必须为你的活动设置不同的布局。您可以使用以下内容:
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>
@颜色/霉色
@颜色/。。。
@颜色/。。。
我也尝试过,但这里出现了错误/enable icon for up navigation ActionBar ActionBar=getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);对不起,我想我误解了你的问题,请看我的编辑answer@NikoYuwono我不认为它将工作的问题要求工具栏在活动中没有布局。您的答案希望提供布局setContentView
,以便使工具栏处于活动状态。@NikoYuwono我稍后会尝试。因为现在我有课。谢谢你answer@VipulAsri阅读他的代码中的注释,此活动将作为基本活动,除MainActivity外的所有活动都将扩展GeneralActivity。我也尝试过,但我在此处遇到错误/enable icon for up navigation ActionBar ActionBar=getActionBar();actionBar.setDisplayHomeAsUpEnabled(true);对不起,我想我误解了你的问题,请看我的编辑answer@NikoYuwono我不认为它将工作的问题要求工具栏在活动中没有布局。您的答案希望提供布局setContentView
,以便使工具栏处于活动状态。@NikoYuwono我稍后会尝试。因为现在我有课。谢谢你answer@VipulAsri阅读他的代码中的注释,此活动将作为基本活动,除MainActivity外的所有活动都将扩展GeneralActivity。清单中未提及此活动。该活动充当其他活动的基本活动。示例:Activity1扩展了常规ActivityManifest中未提及该活动。该活动充当其他活动的基本活动。示例:活动1扩展了一般活动非常感谢您的回答。但是,先生,有没有其他方法使我不会更改styles.xml,因为我已经在应用程序中建立了该样式。顺便说一句,我正在试验的这个代码示例来到这里,您不必更改样式。如果您想添加工具栏而不使用布局文件,则只需使用这些属性。先生,我已经尝试过您的解决方案,但不起作用:(如果我调用此活动的样式,尤其是此样式,那么如何:这样我就可以将操作栏帖子中的代码更改为:ActionBar ActionBar=getSupportActionBar();ActionBar.setDisplayHomeAsUpEnabled(true);…是否可以为一个活动设置不同的样式?但是,如果GeneralActivity不会在清单中调用,以便可以应用主题或样式,那么是否可以通过编程方式应用主题/样式?非常感谢您的回答。但是,先生,有没有其他方法使我不会更改styles.xml,因为我已经在应用程序中建立了该样式。顺便说一句,我正在试验的这个代码示例出现在这里。你不必更改样式。如果你想添加工具栏而不使用布局文件,你只需使用这些属性。先生,我已经试过你的解决方案,但它不起作用(如果我调用此活动的样式,尤其是此样式,那么如何:这样我就可以将操作栏帖子中的代码更改为:ActionBar ActionBar=getSupportActionBar();ActionBar.setDisplayHomeAsUpEnabled(true);…是否可以为活动设置不同的样式?但是如果在清单中不调用GeneralActivity以便可以应用主题或样式,那么可以通过编程方式应用主题/样式吗?