2013-10-02 7 views
0

Я сделал макет для ActionBar:Как установить включение панели действий, например, невидимую?

actionbar.xml:

<LinearLayout 
    android:id="@+id/titleLayout" 
    android:layout_width="fill_parent" 
    android:layout_height="85dp" 
    android:height="70dip" 
    android:orientation="horizontal" 
    android:paddingBottom="5dp" 
    android:paddingTop="5dp" > 

    <ImageView 
     android:id="@+id/logo" 
     android:layout_width="300dp" 
     android:layout_height="70dp" 
     android:layout_marginBottom="54dp" 
     android:paddingLeft="24dp" 
     android:paddingTop="5dp" 
     android:src="@drawable/mobility" /> 

</LinearLayout> 

Я включил этот макет в некоторых других макетов, как это:

<include 
    android:id="@+id/include" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    layout="@layout/actionbar" /> 

И теперь я хочу, чтобы эта включенная панель действий была невидимой во всех где я включил его.

Есть ли способ сделать это?

EDIT:

И рассмотрим я использую ViewFlipper для переключения между раскладками.

ответ

0

Вы можете установить его невидимым, как и любой другой элемент или расположение:

findViewById(R.id.include).setVisibility(View.INVISIBLE); 

Два замечания:

  • Я думаю, что вы на самом деле ищете более сильную форму невидимости, которая: findViewById(R.id.include).setVisibility(View.GONE);
  • Для каждого включения необходимо использовать разные идентификаторы, чтобы гарантировать, что правильный найден. Но я думаю, вы просто упростили код для своего вопроса.
+0

Да, я пробовал это, и он работает для первого макета. Поскольку я использую ViewFlipper для переключения между представлениями, и если я использую код, который вы написали, он попадает только в «Основной вид», где я объявлял ViewFlipper невидимым. Поэтому я хочу сделать это во всех макетах невидимым. Есть идеи? –

+1

У вас есть еще один ActionBar? Какой API-уровень вы используете? Вы либо используете новый API-уровень (Android 3.0+), либо можете использовать Фрагменты и ActionBar (без ViewFlipper) или более старый API-уровень (Android 2.3-) и должны использовать ViewFlipper и ActionBarSherlock. Во втором случае вы должны установить все, что включает невидимое отдельно. – jboi

+0

Я программирую версию 4.0.3 и minSdkVersion 14. –

1

Разве вы не можете просто сделать

findViewById(R.id.titleLayout).setVisibility(View.INVISIBLE); 

В случае, если вы используете ViewFlipper, то что-то подобное может помочь:

vf.getCurrentView().findViewById(R.id.titleLayout).setVisibility(View.INVISIBLE); 

где В.Ф. является ссылкой на ваш ViewFlipper из XML

HTH

+0

es Я пробовал это, и он работает для первого макета. Поскольку я использую ViewFlipper для переключения между представлениями, и если я использую код, который вы написали, он попадает только в «Основной вид», где я объявлял ViewFlipper невидимым. Поэтому я хочу сделать это во всех макетах невидимым. Есть идеи? –

+0

@silvia_aut отредактировал мой ответ соответственно. HTH –

+0

Нет, он тоже не работает. Я думаю, что я должен установить, чтобы все включали отдельно. Спасибо за ответ. –

0

Попробуйте это,

View mView = findViewById(R.id.include); 
ImageView mImgView = (ImageView) mView.findViewById(R.id.logo).setVisibility(View.GONE); 

Используя этот подход, вы можете получить доступ к любому полю в любом из них.

+0

Ошибка: не может отбрасываться из void в ImageView. –

+0

очистить проект –

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