从主要Xamarin项目在Android工具栏中显示/隐藏ImageView

时间:2019-03-21 15:53:01

标签: c# android xamarin xamarin.forms xamarin.android

这是我的情况。我有一个适用于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项目,因此我在这里一直都想通了。

1 个答案:

答案 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及更高版本