findViewById в пользовательской строке заголовка внутри вкладки Activity
У меня есть настраиваемая строка заголовка на моем 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 ответа
Вы можете получить доступ к TextView
а также ImageView
объявив их public static
в TabActivity
, Затем в Sub-Activity
вы, очевидно, получаете доступ к общедоступным статическим TextView и ImageView, как,
Main_Tab_Activity.textView.setText("my_text_view");
Если вы разместите пользовательскую строку заголовка только в главной вкладке, эта строка заголовка появится во всех ваших вложенных элементах.
Например, если вы задали пользовательскую строку заголовка в Main TabActivity:
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);
нет необходимости отдавать все ваши под вкладки "Активность".
Во всех вложенных вкладках Activity вы только что установили setContentView(R.layout.sub_layout);
Использование
getParent().getWindow().findViewById(id)
insted id findViewById(id);
для доступа к любому мнению родителей.