虽然我使用自定义操作栏,但默认操作栏仍然显示

时间:2015-05-04 22:12:53

标签: android android-actionbar

我在操作栏上遇到了麻烦。我为自定义操作栏创建了一个新布局并应用了它。自定义操作栏工作正常,但启动应用程序时,默认操作栏首先出现,然后消失。我研究过但我无法找到解决问题的解决方案。

我的主要活动代码如下:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    ActionBar myActionbar = getActionBar();
    myActionbar.setCustomView(R.layout.custom_actionbar);
    myActionbar.setDisplayShowHomeEnabled(false);
    myActionbar.setDisplayShowTitleEnabled(false);
    myActionbar.setDisplayShowCustomEnabled(true);


}

和styles.xml

<resources>

<style name="appTheme"
    parent="@android:style/Theme.Holo.Light">
</style>

</resources>

3 个答案:

答案 0 :(得分:0)

在res / values文件夹

中的styles.xml文件中添加以下代码
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>

在res / values-v11文件夹

中的styles.xml文件中添加以下代码
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>

在res / values-v14文件夹

中的styles.xml文件中添加以下代码
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
    <style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
    <style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>

最后在您的AndroidManifest.xml文件中,如果您希望将其应用于整个应用程序,请将以下代码添加到您不想要标题的活动的活动标记或应用程序标记中。

android:theme="@style/Theme.NoTitle"

希望这有帮助!

答案 1 :(得分:0)

这是一个例子..

首先,您必须为自定义操作栏创建布局,以便根据您的要求定义功能。这是xml文件......

自定义操作栏的布局:

 <ImageView
        android:id="@+id/custom_actionbar_back_iv"
        android:layout_width="@dimen/small_margin_ar"
        android:layout_height="@dimen/very_small_margin_ar"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:src="@drawable/up_navigation"/>

    <TextView
        android:id="@+id/custom_actionbar_titleText_tv"
        style="@style/wrapscreen"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/custom_actionbar_back_iv"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/white"
        android:textSize="@dimen/above_medium_text_size" />

    <ImageButton
        android:id="@+id/custom_actionbar_goToArchiveActivity_ib"
        style="@style/wrapscreen"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="@dimen/medium_margin"
        android:background="@null"
        android:src="@drawable/ic_action_overflow" />

这是实施..

在onCreate()方法中定义setupactionBar()方法

private void setUpActionBar() {
        ActionBar actionBar = getActionBar();
        actionBar.setDisplayShowHomeEnabled(false);
        actionBar.setDisplayShowTitleEnabled(false);

        LayoutInflater layoutInflater = LayoutInflater.from(this);
        View customActionBarView = layoutInflater.inflate(R.layout.custom_actionbar, null);

        // this view is used to show tile
        TextView ActivityTitleTV = (TextView) customActionBarView.findViewById(R.id.custom_actionbar_titleText_tv);
        ActivityTitleTV.setText(R.string.title_text_archive);

        //this view can be used for back navigation
        ImageView backToRecorderIV = (ImageView) customActionBarView.findViewById(R.id.custom_actionbar_back_iv);
        backToRecorderIV.setVisibility(View.VISIBLE);
        backToRecorderIV.setOnClickListener(this);

        //Another view which has up navigation
        ImageButton goToArchiveActivityIB = (ImageButton) customActionBarView.findViewById(R.id.custom_actionbar_goToArchiveActivity_ib);
        goToArchiveActivityIB.setVisibility(View.GONE);

        actionBar.setCustomView(customActionBarView);
        actionBar.setDisplayShowCustomEnabled(true);
    }

    //listener for back navigation
    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.custom_actionbar_back_iv:
                Intent recorder = new Intent(ArchiveActivity.this, RecorderActivity.class);
                startActivity(recorder);
                finish();
                break;
        }
    }

希望这会有所帮助......

答案 2 :(得分:0)

我为自定义操作栏做了以下操作。也许有人需要它。

我创建了 custom_actionbar_theme.xml

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

<style
name="CustomActionBarTheme"
parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarStyle">@style/CustomActionBarStyle</item>
</style>

<style
name="CustomActionBarStyle"
parent="@style/Widget.AppCompat.ActionBar">
<item name="background">@drawable/action_bar_background</item>
<item name="titleTextStyle">@style/ActionBarTextColor</item>
</style>


<style name="ActionBarTextColor"
    parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/actionBarTitleColor</item>
</style>


</resources>

我已更改此xml中操作栏的背景和标题颜色。然后我改变了

<application
        ... 
        android:theme="@style/CustomActionBarTheme" >