- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了 CircleImageView 的问题从图库中选择图像或从相机中拍摄照片后,它显示黑色图像,它在 lolipop 中工作得很好,但在 kitkat 版本中出现了这个问题
这是我的代码
我的 xml ImageView
<refractored.controls.CircleImageView
android:id="@+id/storeImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/misr_pharmacy"
/>
我的C#代码
private void ChooseImage()
{
String[] items = { "Take Photo", "Choose from Library", "Cancel" };
using (var dialogBuilder = new AlertDialog.Builder(this))
{
dialogBuilder.SetTitle("Add Photo");
dialogBuilder.SetItems(items, (d, args) => {
//Take photo
if (args.Which == 0)
{
if ((int)Build.VERSION.SdkInt >= 23)
{
if (!marshMallowPermission.checkPermissionForWriteExternalStorage())
{
bool _ShouldShowRequest = ShouldShowRequestPermissionRationale(PublicKeys.WriteExternalStoragePermission);
marshMallowPermission.requestPermissionForWriteExternalStorage(_ShouldShowRequest);
}
}
dispatchTakePictureIntent();
}
//Choose from gallery
else if (args.Which == 1)
{
if ((int)Build.VERSION.SdkInt >= 23)
{
if (!marshMallowPermission.checkPermissionForReadExternalStorage())
{
bool _ShouldShowRequest = ShouldShowRequestPermissionRationale(PublicKeys.ReadExternalStoragePermission);
marshMallowPermission.requestPermissionForReadExternalStorage(_ShouldShowRequest);
}
}
dispatchChoosePictureIntent();
}
});
dialogBuilder.Show();
}
}
private void dispatchTakePictureIntent()
{
var takePictureIntent = new Intent(MediaStore.ActionImageCapture);
File photoFile = null;
try
{
photoFile = FileUtils.createImageFile();
currentFilePath = "file:" + photoFile.AbsolutePath;
}
catch (Exception e)
{
return;
}
if (photoFile != null && takePictureIntent.ResolveActivity(PackageManager) != null)
{
takePictureIntent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(photoFile));
this.StartActivityForResult(takePictureIntent, REQUEST_CAMERA);
}
}
private void dispatchChoosePictureIntent()
{
var intent = new Intent(Intent.ActionPick, MediaStore.Images.Media.ExternalContentUri);
intent.SetType("image/*");
this.StartActivityForResult(Intent.CreateChooser(intent, "Select Picture"), SELECT_FILE);
}
protected override void OnActivityResult(int requestCode, [GeneratedEnum] Result resultCode, Intent data)
{
base.OnActivityResult(requestCode, resultCode, data);
if (resultCode == Result.Ok)
{
if (requestCode == REQUEST_CAMERA)
{
// Handle the newly captured image
Android.Net.Uri imageUri = Android.Net.Uri.Parse(currentFilePath);
iv_profileImage.SetImageURI(imageUri);
}
else if (requestCode == SELECT_FILE)
{
// Handle the image chosen from gallery
string selectedImagePath = FileUtils.GetPath(this, data.Data);
iv_profileImage.SetImageURI(Android.Net.Uri.FromFile(new File (selectedImagePath)));
}
}
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
{
switch (requestCode)
{
case PublicKeys.WRITE_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE:
{
if (grantResults[0] == Permission.Granted)
{
//Permission granted
Snackbar.Make(layout, "camera permission is available", Snackbar.LengthShort).Show();
dispatchTakePictureIntent();
}
else
{
//Permission Denied :(
//Disabling functionality
Snackbar.Make(layout, GetString(Resource.String.camera_permission_denied), Snackbar.LengthShort).Show();
}
}
break;
case PublicKeys.READ_EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE:
{
if (grantResults[0] == Permission.Granted)
{
//Permission granted
var snack = Snackbar.Make(layout, "camera permission is available", Snackbar.LengthShort);
snack.Show();
dispatchChoosePictureIntent();
}
else
{
//Permission Denied :(
//Disabling functionality
var snack = Snackbar.Make(layout, "Camera permission is denied.", Snackbar.LengthShort);
snack.Show();
}
}
break;
}
}
我的助手类创建文件
public static File createImageFile()
{
//create an image file name
string timeStamp = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
string imageFileName = "JPEG_" + timeStamp + "_";
File storageDir = Android.OS.Environment.GetExternalStoragePublicDirectory(
Android.OS.Environment.DirectoryPictures);
File image = File.CreateTempFile(
imageFileName,
".jpg",
storageDir
);
// Save a file: path for use with ACTION_VIEW intents
return image;
}
public static string GetPath (Context context , Android.Net.Uri uri)
{
bool isKitKat = Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat;
// DocumentProvider
if (isKitKat && DocumentsContract.IsDocumentUri(context, uri))
{
// ExternalStorageProvider
if (isExternalStorageDocument(uri))
{
string docId = DocumentsContract.GetDocumentId(uri);
string[] split = docId.Split(':');
string type = split[0];
if (string.Equals("primary" , type , StringComparison.OrdinalIgnoreCase))
{
return Android.OS.Environment.ExternalStorageDirectory + "/" + split[1];
}
// TODO handle non-primary volumes
}
// DownloadsProvider
else if (isDownloadsDocument(uri))
{
string id = DocumentsContract.GetDocumentId(uri);
Android.Net.Uri contentUri = ContentUris.WithAppendedId(
Android.Net.Uri.Parse("content://downloads/public_downloads"), long.Parse(id));
return getDataColumn(context, contentUri, null, null);
}
// MediaProvider
else if (isMediaDocument(uri))
{
string docId = DocumentsContract.GetDocumentId(uri);
string[] split = docId.Split(':' );
string type = split[0];
Android.Net.Uri contentUri = null;
if ("image".Equals(type))
{
contentUri = MediaStore.Images.Media.ExternalContentUri;
}
else if ("video".Equals(type))
{
contentUri = MediaStore.Video.Media.ExternalContentUri;
}
else if ("audio".Equals(type))
{
contentUri = MediaStore.Audio.Media.ExternalContentUri;
}
string selection = "_id=?";
string[] selectionArgs = new string[] {
split[1]
};
return getDataColumn(context, contentUri, selection, selectionArgs);
}
}
// MediaStore (and general)
else if (string.Equals("content" , uri.Scheme , StringComparison.OrdinalIgnoreCase))
{
return getDataColumn(context, uri, null, null);
}
// File
else if (string.Equals("file", uri.Scheme, StringComparison.OrdinalIgnoreCase))
{
return uri.Path;
}
return null;
}
/**
* Get the value of the data column for this Uri. This is useful for
* MediaStore Uris, and other file-based ContentProviders.
*
* @param context The context.
* @param uri The Uri to query.
* @param selection (Optional) Filter used in the query.
* @param selectionArgs (Optional) Selection arguments used in the query.
* @return The value of the _data column, which is typically a file path.
*/
public static string getDataColumn(Context context, Android.Net.Uri uri, string selection,
string[] selectionArgs)
{
ICursor cursor = null;
string column = "_data";
string[] projection = {
column
};
try
{
cursor = context.ContentResolver.Query(uri, projection, selection, selectionArgs,
null);
if (cursor != null && cursor.MoveToFirst())
{
int column_index = cursor.GetColumnIndexOrThrow(column);
return cursor.GetString(column_index);
}
}
finally
{
if (cursor != null)
cursor.Close();
}
return null;
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is ExternalStorageProvider.
*/
public static bool isExternalStorageDocument(Android.Net.Uri uri)
{
return "com.android.externalstorage.documents".Equals(uri.Authority);
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is DownloadsProvider.
*/
public static bool isDownloadsDocument(Android.Net.Uri uri)
{
return "com.android.providers.downloads.documents".Equals(uri.Authority);
}
/**
* @param uri The Uri to check.
* @return Whether the Uri authority is MediaProvider.
*/
public static bool isMediaDocument(Android.Net.Uri uri)
{
return "com.android.providers.media.documents".Equals(uri.Authority);
}
最佳答案
不要乱用 GetData()
来构造另一个 uri。
您已经有一个 uri!
直接使用iv_profileImage.SetImageURI(data.Data);
。
关于c# - xamarin - ImageView 在从画廊的相机拍摄照片后显示黑色图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41462315/
我已经从github https://github.com/xamarin/xamarin-forms-samples下载了Xamarin.Form示例项目 打开任何示例项目后,它不允许我在iOS S
我收到此错误: "MyApp\App.cs(7,7): Error CS0246: The type or namespace name 'Xamarin' could not be found (a
我想知道 Xamarin 是否带有 Mono 运行时及其所有应用程序包。在这种情况下,如果两个基于 Xamarin 的应用程序安装在一个设备上,该设备将拥有两个 Mono 运行时权利。这是 Xamar
如何将库导入 Xamarin? 例如,我将如何导入 json.net为我的项目使用 xamarin? 谢谢 最佳答案 Json.NET可免费获得精美包装 Xamarin-compatible Comp
我不知道如何在输入框中置顶占位符文本。 我有一个很大的输入框,想把占位符文本放在顶部。 最佳答案 您需要为每个平台创建一个自定义渲染器以对齐占位符,如下所示: public class Placeh
我很难找到有关Xamarin.Forms的后台任务支持的文档。 Xamarin.Forms是否提供对定期后台任务的支持? 我需要为Windows Phone 10和Android都实现此功能。 最佳答
Xamarin.iOS中是否提供iOS Picker?我进行了详尽的搜索,但是没有示例,也没有信息可查。但是,它在Xamarin.Form中可用。 最佳答案 UIPickerView的真实示例示例:(
有谁知道是否可以使用 Xamarin.Forms 创建CardView样式(可滚动)列表?我们需要它在iOS和Android上将呈现为相同的。还需要调整阴影等属性(略微提高每张卡) 最佳答案 这是一个
所以,我对 Xamarin 有点陌生,我试图弄清楚如何显示一个包含用户文本输入字段的弹出窗口。 DisplayAlert 不这样做,因为它没有文本输入字段。我应该使用什么? 最佳答案 您可以使用 Di
我有一个运行良好的表单应用程序,但我注意到当页面出现时,背景颜色在几分之一秒内设置不正确。 我有这个代码用于我的 OnAppearing protected override async vo
您好,我正在开发一个具有登录功能的应用程序,它可以选择让您保持登录状态,即使您关闭该应用程序也是如此。 问题是什么?这就是我在 App.cs 中所做的: var statusLog = Appli
由于BackgroundImage是一个字符串,您应该如何设置Page的背景图像?我将不胜感激任何建议。 到目前为止,我已经尝试过: MainPage = new ContentPage {
如何使用 Renderer 在 Xamarin Forms 中使用渐变效果创建此按钮? 最佳答案 在 xamarin 中,您不能将渐变颜色添加为内置功能。您必须创建不同的渲染功能。这个 link 将指
背景:我正在处理一个 C# 项目。过去,当我做 System.Console.WriteLine("Hello"); 我会看到一个弹出控制台打印“你好”。控制台今天消失了,我该怎么做才能让它再次出现?
我们每天都在使用 Xamarin 和 Xamarin Forms,并且经常遇到异常而没有任何关于如何调试的有用信息。 有时它是我们的目标,有时是 Xamarin 中的错误,尤其是 Xamarin Fo
我正在使用 xamarin studio(带有 nuget 包管理插件),并且在我的项目中有一些 nuget 包。 项目上下文菜单中有“管理”和“恢复 nuget 包”,但也有控制台吗? 最佳答案 X
我有一个 CustomCalendar 元素,它是通过扩展 ContentView 并在另一个 ContentPage 中使用此自定义 View 而创建的。我尝试使用非聚焦事件来检测外部点击。但是问题
因此,对于整个MVVM,我还是一个新手。我几乎了解它的基本知识。我有一个可以按原样工作的示例,但是我试图将其更改为MVVM样式。我只是尝试不同的例子,所以我可以学习。 (LoginPage.xaml)
我正在尝试使我的Xamarin项目在Prism和DryIoc中使用MVVM。 我主要想使用自动注册,如下所示: [AutoRegisterForNavigation] ... protected ov
我有一个问题,如何在 Forms Xamarin 中制作模态屏幕,如附加的图像。 我想知道你们是否可以向我发送一段代码或示例以了解如何做到这一点。 https://extravios.com.br/c
我是一名优秀的程序员,十分优秀!