0

Я работаю с новой панелью инструментов для Android.Как изменить вид панели инструментов 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); 
} 

Он работает до сих пор, но теперь я хочу изменить вид панели инструментов после нажатия на элемент списка. Это моя проблема, потому что последний фрагмент кода не создает исключений или других проблем, поэтому все должно быть в порядке. Но я вижу только «старую» панель инструментов. Я попытался установить видимость на GONE или INVISIBLE на старый, но это не имеет никакого эффекта.

В моем Activity_main.xml я включаю R.id.toolbar, но, я думаю, второй код должен перезаписать старый !?

EDIT: AFAIK, новая панель инструментов должна заменить старый блок действий. Панель инструментов используется для размещения навигации или другого конкретного контента. В моем случае я хочу создать небольшое меню действий, в котором пользователь может редактировать или удалять элемент списка.

+0

Добавить код еще. Как бы то ни было, я думаю, что вы неправильно используете вызов панели инструментов. Действительно, я готов поспорить. Попробуйте вставить всю панель инструментов и играть с object.visibility (View.GONE) и View.VISIBLE. – Maga

+0

Я думаю, что панель инструментов должна быть частью макета активности. В другом случае он не появлялся. Вы хотите иметь конкретный макет панели инструментов, основанный на некоторых условиях? – Abdullah

+0

Да, я хочу иметь другой макет при некоторых условиях. Я сделал свой первый пост. – user3417078

ответ

0

Я нашел решение Вашего вопроса (может быть, его слишком поздно ...), но ниже код, который я использовал, чтобы сделать это:

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" /> 

Надеется, что это помогает у ou, Darkball60