我试图删除我的一个操作栏项目(设置菜单)并添加另一个,但它没有将正确的图标/操作添加到操作栏.
我的布局文件如下
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:icon="@drawable/settings"
android:showAsAction="always" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我正在这样初始化它
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDefaultDisplayHomeAsUpEnabled(false);
actionBar.setHomeButtonEnabled(true);
actionBar.setTitle(mTitle);
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
它显示了三个安卓点而不是我自己的图标(它也将它放在下拉列表中我想要更改红色圆圈中的点
我究竟做错了什么
我花了很长时间才得到ActionBar分割中的标签图标ActionBar,以及将标签指示器颜色变为白色.所以现在我需要做的就是在取消选择时用不同的颜色交换图标.所选图标(和指示符)应保持白色.但是怎么样?我用它Android Action Bar Style Generator来制作我的标签,所以我有点紧张的触摸我styles.xml(那里已经有很多东西).我做了一个旧的应用程序,你可以使用一个可绘制的状态选择器xml,但我正在使用TabHost,现在非常贬值,所以我不能再使用它了.但是,如果你知道一个简单的方法来使用drawables文件或我的styles.xml,或者一个点击监听器?我不知道,但我很乐意学习.基本上未选择的图标应该是浅蓝色.
我也使用滑动标签ViewPager,所以当我滑动时,未选中和选择的图标应该是正确的颜色.
更新:原来我不得不将代码添加到我的onTabSelected()和onTabUnselected(),然后,像变魔术一样:
@Override
public void onTabSelected(ActionBar.Tab tab,
android.support.v4.app.FragmentTransaction fragmentTransaction) {
// When the given tab is selected, switch to the corresponding page in the ViewPager.
pager.setCurrentItem(tab.getPosition());
if (tab.getPosition() == PHOTO_TAB)
photo.setIcon(R.drawable.ab_camera);
else if (tab.getPosition() == VIDEO_TAB)
video.setIcon(R.drawable.ab_video);
else if (tab.getPosition() == AUDIO_TAB)
audio.setIcon(R.drawable.ab_microphone);
else if (tab.getPosition() == TEXT_TAB)
text.setIcon(R.drawable.ab_write);
}
@Override
public void onTabUnselected(ActionBar.Tab …Run Code Online (Sandbox Code Playgroud) android styles android-layout android-actionbar android-tabs
如何将ActionBar标题设为大写?一些答案建议推杆<item name="android:textAllCaps">true</item>,但当我把它放在actionBar样式或actionBar中时,这没有任何效果titleTextStyle.它只有在我使用AppTheme风格时才有效果,但是在我的应用程序中也有很多东西也是我不想要的.
我的风格:
<style name="AppTheme" parent="AppBaseTheme">
<!-- snip snip -->
<item name="android:actionBarStyle">@style/NewActionBar</item>
</style>
<style name="NewActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@color/text_pink</item> <!-- no effect -->
<item name="android:titleTextStyle">@style/NewActionBarTitle</item>
<item name="android:displayOptions">showHome|showTitle</item>
<item name="android:textAllCaps">true</item> <!-- no effect -->
</style>
<style name="NewActionBarTitle">
<item name="android:textSize">@dimen/tiny_text_size</item> <!-- no effect -->
<item name="android:textAllCaps">true</item> <!-- no effect -->
</style>
Run Code Online (Sandbox Code Playgroud)
为什么这些NewActionBar和NewActionBarTitle样式似乎无论我放入什么都没有效果?我的风格或动作栏有什么问题或什么?
编辑:我刚刚完全删除了样式NewActionBar和NewActionBarTitle(以及在样式中对它们的引用AppTheme),并且操作栏看起来完全相同.所以有些东西被破坏了 会是什么呢?
在投票结束或标记为重复之前PS看到问题.已经采取了所有可能的方法来隐藏菜单项但似乎没有工作.
我的options_menu.xml如下
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_search"
android:title="@string/search_title"
android:icon="@drawable/ic_action_search"
android:showAsAction="collapseActionView|ifRoom"
android:actionViewClass="android.widget.SearchView" />
<item
android:id="@+id/menu_share"
android:icon="@android:drawable/ic_menu_share"
android:showAsAction="always"
android:title="Share"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
我在ParentFragment上显示此菜单,我在其中隐藏menu_share使用此代码
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.options_menu, menu);
menu.findItem(R.id.menu_share).setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
这会Share成功隐藏选项.现在这个片段打开了一个新片段,即一个儿童片段.
在这个子片段中,我想隐藏该Search项目并仅显示该Share选项.但是使用相同的代码在这里没有用.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.options_menu, menu);
menu.findItem(R.id.menu_search).setVisible(false);
}
Run Code Online (Sandbox Code Playgroud)
我甚至尝试过getActivity().invalidateOptionsMenu();但没有效果,Actionbar总是显示两个菜单项.请帮我弄清楚导致这种情况的原因.
错误日志
E/AndroidRuntime? FATAL EXCEPTION: main
Process: info.androidhive.slidingmenu, PID: 27321
java.lang.NullPointerException
at info.androidhive.slidingmenu.HomeFragment.onPrepareOptionsMenu(HomeFragment.java:476)
at android.app.Fragment.performPrepareOptionsMenu(Fragment.java:1794)
at android.app.FragmentManagerImpl.dispatchPrepareOptionsMenu(FragmentManager.java:1964)
at android.app.Activity.onPreparePanel(Activity.java:2665)
at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:540)
at com.android.internal.policy.impl.PhoneWindow.doInvalidatePanelMenu(PhoneWindow.java:881) …Run Code Online (Sandbox Code Playgroud) android menuitem android-fragments android-actionbar oncreateoptionsmenu
我需要扩展Activity而不是ActionBarActivity或AppCompatActivity才能使用第三方库.
在所有应用程序中,我一直在使用AppCompatActivity以便在其中轻松添加工具栏,但是如果我扩展Activity,显然我不能这样做.我也很高兴有一个ActionBar:它不一样,但它总比没有好.不过,我不知道怎么做: - /
你对我有什么建议吗?我知道这可能是一个愚蠢的问题,但我只是不知道如何使这项工作......
android android-appcompat android-activity android-actionbar android-toolbar
我正在尝试更改操作栏的标题,但我有空指针异常,我不是很专家,所以我真的不知道如何捕获异常或正确执行,基本上这是我有的线问题:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setIcon(R.drawable.profile_banner_orange);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用新的设计库,但我有一个工具栏而不是不赞成使用的操作栏。问题在于工具栏占用了活动中的整个区域。我一直在尝试不同的示例,并用它们替换了布局文件,我尝试了不同的width和height值。我不知道为什么会这样。都没有用!是什么原因造成的?
非常感谢您的帮助。
activity_main.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
android:layout_height="match_parent">
<include
android:id="@+id/tool_bar"
layout="@layout/app_bar"
></include>
<RelativeLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</RelativeLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nav_draw"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/drawer_header"
app:menu="@menu/drawer" />
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
主要活动 :
public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
Toolbar toolbar;
View root;
NavigationView nav_draw;
DrawerLayout drawer_layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
root = getLayoutInflater().inflate(R.layout.activity_main, null);
setContentView(root);
setupToolbar();
drawer_layout = (DrawerLayout)findViewById(R.id.drawer_layout);
nav_draw = (NavigationView) findViewById(R.id.nav_draw);
nav_draw.setNavigationItemSelectedListener(this);
getSupportFragmentManager().beginTransaction()
.replace(R.id.container, new Fragment())
.commit();
}
private void setupToolbar(){
Toolbar toolbar …Run Code Online (Sandbox Code Playgroud) 实际上,我将Android应用程序更改为材料设计时出现问题.
我尝试调用getSupportActionbar,但我总是收到错误
getSupportActionBar in class AppCompatActivity cannot be applied to android.support.v7.widget.Toolbar
Run Code Online (Sandbox Code Playgroud)
我的代码是
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
getSupportActionBar(mToolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
在getSupportActionBar(mToolbar)中抛出错误.
工具栏在toolbar.xml中声明
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
local:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
local:popupTheme="@style/ThemeOverlay.AppCompat.Light" />
Run Code Online (Sandbox Code Playgroud)
你们中的某些人可以帮助我
我想在片段的操作栏上添加按钮.但是我在下面给出的代码上收到错误.
这是我的片段代码,我想在此选项卡的操作栏上添加按钮
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.credit_main, container, false);
return view;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu items for use in the action bar
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.search_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// action with ID action_refresh was selected
case R.id.search:
Toast.makeText(getActivity(), "Refresh selected", Toast.LENGTH_SHORT)
.show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
Run Code Online (Sandbox Code Playgroud)
这里的错误是 …
我需要在我的应用程序中保留选项卡式工具栏,删除操作栏.这就是现在的样子:

但我希望它看起来像这样:
我的代码xml是:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"/>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<android.support.v4.view.ViewPager
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的.java:
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_layout);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
if (toolbar != null) {
setSupportActionBar(toolbar);
}
viewPager.setAdapter(new SectionPagerAdapter(getSupportFragmentManager()));
tabLayout.setupWithViewPager(viewPager);
}
public class SectionPagerAdapter extends FragmentPagerAdapter {
public SectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) …Run Code Online (Sandbox Code Playgroud)