Hes*_*han 5 c# android xamarin.android xamarin
var upArrow = Resources.GetDrawable(Resource.Drawable.abc_ic_ab_back_material);
upArrow.SetColorFilter(Resources.GetColor(Android.Resource.Color.White), PorterDuff.Mode.SrcIn);
SupportActionBar.SetHomeAsUpIndicator(upArrow);
Run Code Online (Sandbox Code Playgroud)
上面的代码不会改变箭头颜色.upArrow ColorFilter值为null.这应该是什么原因?我不是问如何改变可绘制的颜色.我的问题是为什么上面的代码无法设置滤色器?以下是MainActivity代码.
public class MvxFormsApplicationActivity : FormsAppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(bundle);
Xamarin.Forms.Forms.Init(this, bundle); ;
//Plugins.NewictLib.Forms.Android.Renderers.GifImageViewRenderer.Init ();
DLToolkit.Forms.Controls.FlowListView.Init ();
UserDialogs.Init ((Activity) Xamarin.Forms.Forms.Context);
OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init();
// var mvxFormsApp = new MvxFormsApp ();
// LoadApplication (mvxFormsApp);
var myApp = new MyFormsApp();
LoadApplication (myApp );
AppCompatDelegate.CompatVectorFromResourcesEnabled = true;
//the following needs to set so that the back button color can be changed
var upArrow = Resources.GetDrawable(Resource.Drawable.abc_ic_ab_back_material);
upArrow.SetColorFilter(Resources.GetColor(Android.Resource.Color.White), PorterDuff.Mode.SrcIn);
SupportActionBar.SetHomeAsUpIndicator(upArrow);
if (IsPlayServicesAvailable())
{
var intent = new Intent(this, typeof(RegistrationIntentService));
StartService(intent);
}
//var presenter = Mvx.Resolve<IMvxViewPresenter>() as MvxFormsDroidMasterDetailPagePresenter;
var presenter = Mvx.Resolve <IMvxViewPresenter> () as MVxFormsDroidCustomPagePresenter;//MvxFormsDroidPagePresenter;
if ( presenter == null ) {
throw new ArgumentNullException (nameof(presenter), "MvxFormsApplicationActivity: Please check your Activity class and ensure the presenter has value");
}
//presenter.MvxFormsApp = mvxFormsApp;
presenter.MvxFormsApp = oznesFormsApp;
Mvx.Resolve<IMvxAppStart>().Start();
}
}
Run Code Online (Sandbox Code Playgroud)
SetColorFilter以下是演示在 Android 7.1 和 Android 6.0 模拟器上运行的最小示例。
MainActivity.cs
[Activity(Label = "App39", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
var upArrow = AppCompatResources.GetDrawable(this, Resource.Drawable.abc_ic_ab_back_material);
upArrow.SetColorFilter(new Color(ContextCompat.GetColor(this, Android.Resource.Color.HoloBlueBright)), PorterDuff.Mode.SrcIn);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.SetHomeAsUpIndicator(upArrow);
Button b = FindViewById<Button>(Resource.Id.button);
b.Click += B_Click;
}
private void B_Click(object sender, System.EventArgs e)
{
Intent i = new Intent(this, typeof(MainActivity));
StartActivity(i);
}
}
Run Code Online (Sandbox Code Playgroud)
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="App39.App39" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="16" />
<application android:label="App39" android:theme="@style/Theme.AppCompat.Light"></application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我的代码和你的代码有什么区别?
您正在使用两种已弃用的方法,实际上,您应该使用支持库的等效方法。例如ContextCompat.GetColor。其次,您应该使用AppCompatResourcesorResourcesCompat GetDrawable方法而不是Resources.GetDrawable。
| 归档时间: |
|
| 查看次数: |
1311 次 |
| 最近记录: |