[英]How to use setCompoundDrawables with Xamarin c#
所以我一直在努力處理特定的代碼行很長時間了。 這里是:
btnForward.SetCompoundDrawablesWithIntrinsicBounds(0,0,Android.Resource.Drawable.IcMediaPlay,0);
每當調用此行時,我的應用程序崩潰,並且我的應用程序輸出顯示以下內容:
[mono-rt] java.lang.NoSuchMethodError:沒有名稱為'getDrawable'signature ='(I)Landroid / graphics / drawable / Drawable;的方法;' 在類Landroid / content / Context中;
com.enterprise.project.CallDetails.n_onCreate上的[mono-rt](本機方法)
com.enterprise.project.CallDetails.onCreate(CallDetails.java:29)上的[mono-rt]
[mono-rt]在android.app.Activity.performCreate(Activity.java:5104)
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)上的[mono-rt]
[mono-rt]在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
[mono-rt]在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
[mono-rt],位於android.app.ActivityThread.access $ 600(ActivityThread.java:141)
[mono-rt],位於android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1234)
[mono-rt]在android.os.Handler.dispatchMessage(Handler.java:99)
[mono-rt]在android.os.Looper.loop(Looper.java:137)
[mono-rt]位於android.app.ActivityThread.main(ActivityThread.java:5041)
[mono-rt],位於java.lang.reflect.Method.invokeNative(本機方法)
[mono-rt],位於java.lang.reflect.Method.invoke(Method.java:511)
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run中的[mono-rt](ZygoteInit.java:793)
com.android.internal.os.ZygoteInit.main上的[mono-rt](ZygoteInit.java:560)
dalvik.system.NativeStart.main上的[mono-rt](本機方法)
我嘗試了SetCompoundDrawables的多個變體(intrinsicbound,relative等),但是由於許多其他線程都說WithIntrinsicBounds是必經之路,所以我遵循了這種方式。
我嘗試使用SetCompoundDrawablesWithIntrinsicBounds的其他變體(使用null代替0,使用Drawable代替ID),但是出現了同樣的問題。
萬一這可能是問題,這里是bug之前的代碼塊中使用的幾行代碼
case CallStatus.Paused: //Started but paused
btnForward.Text = "Complete";
btnForward.Clickable = true;
btnForward.Visibility = ViewStates.Visible;
btnForward.SetBackgroundColor (Android.Graphics.Color.Rgb (30, 118, 121));
btnForward.SetCompoundDrawablesWithIntrinsicBounds(0,0,Android.Resource.Drawable.IcMediaPlay,0);
break;
試試這個內部活動:
首先獲取資源ID:
_flagResourceId = this.Resources.GetIdentifier ("IcMediaPlay", "drawable", this.PackageName);
然后設置drawable:
btnForward.SetCompoundDrawablesWithIntrinsicBounds(0,0,Resources.GetDrawable(_flagResourceId),0); Resources.GetDrawable (_flagResourceId)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.