2015-01-11 2 views
0

Я переключаюсь с AcrionBar на панель инструментов, и я заметил, что мне нужно добавить элемент панели инструментов в мои XML-макеты. Мой вопрос в том, что это хорошая идея иметь элемент панели инструментов в разделенном XML-макете, а затем включать его во все мои макеты активности, чтобы у меня был центральный и унифицированный способ настройки моей панели инструментов? Также имея java-часть настройки панели инструментов в суперклассе моих действий (BaseActivity.java), поэтому мне не нужно делать это в каждом отдельном действии?Является ли централизация панели инструментов Android хорошей идеей?

Я думал об этом, но мне интересно, есть ли какие-либо недостатки, так как у меня нет опыта работы с панелью инструментов.

Любая идея будет оценена

ответ

0

Я пытался осуществить то, что я предложил в этом вопросе, и оказывается, что это не возможно, чтобы централизовать его, как я предложил, потому что класс ужин не имеет доступа к просмотру ссылок в дочернем классе. Несмотря на то, что мы можем использовать другие трюки, чтобы сделать эту работу, я заметил, что это не стоит усилий, потому что автомобиль панели инструментов должен быть установлен как переменная ActionBar или SupportActionBar, и все, что нам нужно сделать, это добавить панель инструментов во всю деятельность макеты

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#000000" 
     android:minHeight="?attr/actionBarSize"> 
</android.support.v7.widget.Toolbar> 

и использовать что-то вроде этого

mToolbar = (Toolbar) findViewById(R.id.toolbar); 
if (mToolbar !=null){ 
    setSupportActionBar(mToolbar); 
} 

в нашей деятельности. После этого мы можем иметь наш код, который работал с ActionBar как

0

Я пытался осуществить то, что я предложил в вопросе (для некоторых функций, которые не доступны в панели инструментов, как вкладки, кроме) и получается что его невозможно централизовать, как я предложил, потому что класс ужина не имеет доступа к ссылкам View в классе .

Это неправда. Вы можете расширить setContentView() в методе базовой активности и ввести любое представление в действия с детьми.

@Override 
public void setContentView(int layoutResID) 
{ 
    DrawerLayout fullView = (DrawerLayout) getLayoutInflater().inflate(R.layout.activity_base, null); 
    FrameLayout activityContainer = (FrameLayout) fullView.findViewById(R.id.activity_content); 
    getLayoutInflater().inflate(layoutResID, activityContainer, true); 
    super.setContentView(fullView); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    if (useToolbar()) 
    { 
     setSupportActionBar(toolbar); 
     setTitle("Activity Title"); 
    } 
    else 
    { 
     toolbar.setVisibility(View.GONE); 
    } 
} 

Вы можете оформить этот учебник о том, как реализовать панель инструментов во всех ваших деятельности http://mateoj.com/2015/06/21/adding-toolbar-and-navigation-drawer-all-activities-android/

Смежные вопросы