findViewById в пользовательской строке заголовка внутри вкладки Activity - PullRequest
2 голосов
/ 14 октября 2011

У меня есть настраиваемая строка заголовка, установленная на моем TabActivity.Пользовательская строка заголовка содержит TextView и ImageView в нем.TabHost имеет несколько вкладок.

Я хочу получить доступ к ресурсу ImageView на вкладках.

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

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.myactivity);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mycustomtitle);
TextView tv = (TextView) findViewById(R.id.viewTitleId);

Теперь я хочу получить доступ к ImageView в моих вкладках (которые добавлены в tabHost).Если я установил следующий код на вкладке:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);

Это выдает следующую ошибку:

You cannot combine custom titles with other title features

И если я непосредственно установлю следующее в коде вкладки:

getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.mycustomtitle);
ImageView image = (ImageView) findViewById(R.id.imageTitleId);

Изображение остается пустым.

mycustomtitle.xml имеет следующие два элемента:

<TextView 
     android:layout_width="0dp"
     android:layout_height="wrap_content" 
     android:layout_weight="0.80"
     android:id="@+id/viewTitleId"
     android:textColor="@color/titleBarTextColor"
     android:gravity="center_vertical"
     android:text="@string/viewText"
     android:textSize="18px"
     android:paddingLeft="45px"
     />

<ImageView 
    android:layout_height="wrap_content" 
    android:layout_width="0dp" 
            android:layout_weight="0.20"
    android:src="@drawable/btn_save" 
    android:id="@+id/imageTitleId"
    >
</ImageView>

Пожалуйста, дайте мне некоторую идею, как я могу получить доступ к ImageView пользовательского заголовка на вкладках?

Ответы [ 3 ]

4 голосов
/ 14 октября 2011

Вы можете получить доступ к TextView и ImageView, объявив их public static в TabActivity. Затем в Sub-Activity вы, очевидно, получаете доступ к общедоступным статическим TextView и ImageView, как,

Main_Tab_Activity.textView.setText("my_text_view");
2 голосов
/ 14 октября 2011

Если вы поместили пользовательскую строку заголовка только в главную вкладку, эта строка заголовка появится во всех ваших вложенных вкладках.

Например, если вы задали пользовательскую строку заголовка в основной вкладке:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main_layout);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.header_layout);
TextView tv = (TextView) findViewById(R.id.viewTitleId);
ImageView image = (ImageView)findViewById(R.id.imageTitleId);

нет необходимости отдавать все ваши действия под вкладки.

Во всех действиях под вкладки вы просто устанавливаете setContentView(R.layout.sub_layout);

1 голос
/ 07 сентября 2012

используйте

getParent().getWindow().findViewById(id)

insted id findViewById(id); для доступа к любому представлению родителя.

...