gpt4 book ai didi

android - 使用 `setContentView()` 设置的操作栏 View 不适用于通过 `onCreateOptionsMenu` 添加的项目

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

在我的应用程序中,我使用 setCustomView 方法为操作栏设置自定义 View 。此 View 包含蓝色背景颜色和中心的 Activity 标题。

这是我用于设置自定义 View 的 xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="25dp"
android:background="@color/darkblue" >


<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center"
android:textColor="@android:color/white"
android:textSize="15sp"
android:paddingTop="3dp"
android:text="@string/app_name" />

</RelativeLayout>

这是将它添加到 Activity Action Bar 的代码:

actionBar=getActionBar();
actionBar.setCustomView(R.layout.custom_actionbar);
actionBar.setDisplayOptions(com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_CUSTOM);

现在我使用以下代码将菜单项(搜索)添加到此自定义操作栏:

public boolean onCreateOptionsMenu(Menu menu) {
com.actionbarsherlock.view.MenuInflater inflater=getSupportMenuInflater();
inflater.inflate(R.menu.search, menu);
super.onCreateOptionsMenu(menu);
return true;
}

但是现在这个添加的菜单(搜索)项的背景不是蓝色的,它是Action bar默认的黑色。

这是我的菜单 xml 文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/search"
android:showAsAction="always"
android:icon="@drawable/action_search"/>
</menu>

我该如何解决这个问题。

最佳答案

我认为您的代码可以正常工作...

enter image description here

请比较:

package com.example.testaction;

import android.os.Bundle;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.SherlockActivity;
import com.actionbarsherlock.view.Menu;

public class MainActivity extends SherlockActivity {

private ActionBar actionBar;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Sherlock___Theme_Light);
setContentView(R.layout.activity_main);

actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.test_action);
actionBar
.setDisplayOptions(com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_CUSTOM);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

已编辑

Insted Of Above Code use Custome Theam Like below 然后你的问题就解决了:

<?xml version="1.0" encoding="utf-8"?>
<resources>

<!-- the theme applied to the application or activity -->
<style name="CustomActivityTheme" parent="@android:style/Theme.Holo">
<item name="android:actionBarStyle">@style/MyActionBar</item>
<!-- other activity and action bar styles here -->
</style>

<!-- style for the action bar backgrounds -->
<style name="MyActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">@color/colour_blue</item>
<item name="android:backgroundStacked">#FFFFFF</item>
<item name="android:backgroundSplit">@color/colour_blue</item>
</style>

</resources>

在类里面:

package com.example.testaction;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// setTheme(R.style.Sherlock___Theme_Light);
setContentView(R.layout.activity_main);
/*
* actionBar = getSupportActionBar();
* actionBar.setCustomView(R.layout.test_action); actionBar
* .setDisplayOptions
* (com.actionbarsherlock.app.ActionBar.DISPLAY_SHOW_CUSTOM);
*/
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

在 Android Manifest 中添加此样式:

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/CustomActivityTheme" >

它看起来像:

enter image description here

有关更多详细信息,请查看此 artical .

关于android - 使用 `setContentView()` 设置的操作栏 View 不适用于通过 `onCreateOptionsMenu` 添加的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15409244/

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