这是我的情况。我有一个适用于iOS和Android的Xamarin应用,其中一个要求是,第一个“主”页面需要具有公司徽标,并在工具栏上居中。其他所有页面将显示页面标题而不是徽标。我必须在Android项目中自定义toolbar.axml
文件,才能使用ImageView
使其正确显示,但是现在它出现在每个页面上。我想知道的是,是否可以通过编程方式访问ImageView
并将其可见性属性设置为从共享Xamarin项目(例如App.xaml.cs
文件或MainPage.xaml.cs
文件)可见?还是失败了,是否可以在Android项目中执行此操作,例如在MainActivity.cs
文件中?
这是我的工具栏的样子。
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="?attr/colorPrimary"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:popupTheme="@style/ThemeOverlay.AppCompat.Light"
android:minHeight="?android:attr/actionBarSize">
<ImageView
android:id="@+id/homeLogo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/logo_file"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
android:paddingRight="50dp"
android:scaleType="fitCenter"
android:contentDescription="@string/app_name"
android:visibility="gone"/>
</android.support.v7.widget.Toolbar>
我只需要能够将homeLogo
的可见性设置为主页可见。这是我第一次真正地探究一个真正的Xamarin项目,因此我在这里一直都想通了。
答案 0 :(得分:2)
您可以使用 NavigationPage.TitleView ,然后自定义样式,
例如,您想让homeLogo
页面具有一个带有ImageView的工具栏,您可以在homeLogo.xaml
中进行此操作:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:App11"
x:Class="App11.MainPage">
//custom your style
<NavigationPage.TitleView>
<StackLayout >
<Image Source="ic_action_info.png" />
</StackLayout>
</NavigationPage.TitleView>
</ContentPage>
PS:需要Xamarin.Forms 3.2.0及更高版本