2017-11-04 22 views
0

何らかのロジックでメニュー項目をアニメートしたいのに、refreshのIDを持つメニュー項目がActionViewのプロパティでnullになっています。何が間違っていますか?Androidメニュー項目のActionView属性は常にnullです

メニュー項目のXml:

<?xml version="1.0" encoding="utf-8" ?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:local="http://schemas.android.com/apk/res-auto"> 
     <item 
      android:id="@+id/refresh" 
      android:icon="@drawable/plus_white" 
      local:showAsAction="ifRoom" 
      local:actionViewClass="android.support.v7.widget.ImageView" 
      android:title="Refresh" /> 
     <item 
      android:id="@+id/favoritePodcast" 
      android:icon="@drawable/favorite_star" 
      local:showAsAction="ifRoom" 
      android:title="Favorite" /> 

    </menu> 

OnCreateOption ::

 public override bool OnCreateOptionsMenu(IMenu menu) 
      { 
       MenuInflater.Inflate(Resource.Menu.MainMenu, menu); 

       if (_notified) 
       { 
        IMenuItem item = menu.FindItem(Resource.Id.refresh); 
        var itemView= item.ActionView.JavaCast<Android.Widget.ImageView>(); 

        Animation anim = AnimationUtils.LoadAnimation(ApplicationContext, 
                 Resource.Animation.fade_in); 

        itemView.StartAnimation(anim); 
        Toast.MakeText(this, "Notified", ToastLength.Short).Show(); 
       } 

       return base.OnCreateOptionsMenu(menu); 
      } 

中断点ビュー:

答えて

0

私は答えを見つけました。助けをrobbitへ ありがとう:https://forums.xamarin.com/profile/355640/robbit 私はこのようなメニュー項目の新しいレイアウトを定義します。

NewItemRefresh.axml:>>>>

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="48dp" 
    android:layout_height="fill_parent" 
    android:layout_gravity="right" > 

    <ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:clickable="true" 
     android:src="@drawable/plus_white"/> 

</RelativeLayout> 

とAndroidを追加します。actionLayout = "@レイアウト/ NewItemRefresh

<?xml version="1.0" encoding="utf-8" ?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
      xmlns:local="http://schemas.android.com/apk/res-auto"> 
     <item 
      android:id="@+id/refresh" 
      android:icon="@drawable/plus_white" 
      local:showAsAction="ifRoom" 
      local:actionViewClass="android.support.v7.widget.ImageView" 
      android:actionLayout="@layout/NewItemRefresh" 
      android:title="Refresh" /> 
     <item 
      android:id="@+id/favoritePodcast" 
      android:icon="@drawable/favorite_star" 
      local:showAsAction="ifRoom" 
      android:title="Favorite" /> 

    </menu> 

そしてOnCreateOptionsMenu:「今、メニュー項目

にメニュー項目が変更され

私はいくつかのロジックによってメニューアイテムをアニメーション化できます。