Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改Android工具栏视图?_Android_Toolbar_Android Actionbar Compat_Android Inflate - Fatal编程技术网

如何更改Android工具栏视图?

如何更改Android工具栏视图?,android,toolbar,android-actionbar-compat,android-inflate,Android,Toolbar,Android Actionbar Compat,Android Inflate,我正在使用新的android工具栏 /* Jump into, after the user clicks on a listview item */ private void toogleToolbar() { if (isStandardToolbar) customToolbar(); else originalToolbar(); isStandardToolbar = !isStandardToolbar; } /* Call

我正在使用新的android工具栏

/* Jump into, after the user clicks on a listview item */
private void toogleToolbar() {
    if (isStandardToolbar)
        customToolbar();
    else
        originalToolbar();

    isStandardToolbar = !isStandardToolbar;
}

/* Called inside onCreate and if nothing was clicked */
private void originalToolbar() {
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
}


/* Called after an click event */
private void customToolbar() {
    LayoutInflater inflater = this.getLayoutInflater();
    Toolbar toolbar = (ToolBar) inflater.inflate(R.layout.newtoolbar, null);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
}
到目前为止它还可以工作,但现在我想在单击列表元素后更改工具栏视图。 这是我的问题,因为最后一个代码段不会产生异常或其他问题,所以应该都可以。但我只看到“旧”工具栏。我尝试将可见性设置为“已消失”或“对旧版本不可见”,但没有任何效果

在我的activity_main.xml中,我包含了R.id.toolbar,但我认为,第二个代码必须覆盖旧代码

编辑:
好吧,新工具栏应该取代旧的actionBar。工具栏用于放置导航或其他特定内容。在我的案例中,我想创建一个小的操作菜单,用户可以在其中编辑或删除列表项。

我找到了您问题的解决方案(可能太晚了…),但下面是我用来创建它的代码:

MainActivity.java

package fr.zwedge.sot;

import android.app.*;
import android.os.*;
import android.support.v7.app.*;
import android.support.v7.widget.*;
import android.view.*;
import android.widget.*;
import android.view.View.*;

public class MainActivity extends AppCompatActivity {

boolean isStandardToolbar = true;
android.support.v7.widget.Toolbar toolbar = null, newToolbar = null;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initToolbars();
    ((Button)toolbar.findViewById(R.id.tbt)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            toogleToolbar();
        }
    });
    ((Button)newToolbar.findViewById(R.id.tbt2)).setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            toogleToolbar();
        }
    });
}

/* Jump into, after the user clicks on a listview item */
private void toogleToolbar() {
    if (isStandardToolbar)
        customToolbar();
    else
        originalToolbar();
    isStandardToolbar = !isStandardToolbar;
}

private void initToolbars() {
    if (toolbar == null)
        toolbar = (android.support.v7.widget.Toolbar)findViewById(R.id.toolbar);
    if (newToolbar == null)
        newToolbar = (android.support.v7.widget.Toolbar)findViewById(R.id.newtoolbar);
}

/* Called inside onCreate and if nothing was clicked */
private void originalToolbar() {
    toolbar.setVisibility(View.VISIBLE);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
}


/* Called after an click event */
private void customToolbar() {
    toolbar.setVisibility(View.GONE);
    setSupportActionBar(newToolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(true);
}
}
下面是
main.xml
中的两个工具栏:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:minHeight="?attr/actionBarSize"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:titleTextColor="@android:color/holo_green_dark"
    android:background="#FF008F12">
    <Button
        android:text="Bla bla bla"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:id="@+id/tbt" />
</android.support.v7.widget.Toolbar>

<android.support.v7.widget.Toolbar
    android:id="@+id/newtoolbar"
    android:minHeight="?attr/actionBarSize"  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:titleTextColor="@android:color/holo_green_dark"
    android:background="#FF8F0800">
    <Button
        android:text="Change once again"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tbt2" />
</android.support.v7.widget.Toolbar>

<TextView
    android:text="@string/hello_world"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:id="@+id/text_view" />


希望它能帮助你,黑球60

添加一些代码。不管怎样,我认为您没有正确使用对工具栏的调用。事实上,我敢打赌。尝试插入整个工具栏,并使用object.visibility(View.GONE)和View.VISIBLE。我认为工具栏应该是活动布局的一部分。在其他情况下,它不会出现。您想根据某些条件为工具栏设置特定布局吗?是的,我想根据某些条件设置其他布局。我写了我的第一篇文章。