我想在xamarin.android的C#代码中将dp转换为px ,但我能找到的只是android studio 中的java代码,在xamarin中有一些问题.我尝试使用类似于使用Resources而不是getResources(),我可以解决一些小问题,但是还有一些问题我找不到它们的任何等价物.这里是xamarin中的原始代码,我的代码和我的代码问题:
(从以编程方式将LayoutParams上的高度设置为与密度无关的像素)
java代码
int height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, < HEIGHT >, getResources().getDisplayMetrics());
Run Code Online (Sandbox Code Playgroud)
C#代码
int height = (int)TypedValue.ApplyDimension(TypedValue.COMPLEX_UNIT_DIP, < HEIGHT >, Resources.DisplayMetrics);
Run Code Online (Sandbox Code Playgroud)
问题:
'TypedValue'不包含'COMPLEX_UNIT_DIP'的定义
无效的表达式术语<(>的相同错误)
当前上下文中不存在名称"HEIGHT"
(从公式px找到dp,dp到px android)
java代码
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
Run Code Online (Sandbox Code Playgroud)
C#代码
DisplayMetrics displayMetrics = Application.Context.Resources.DisplayMetrics;
int pixel = Math.Round(dp * (displayMetrics.Xdpi / DisplayMetrics.DensityDefault));
Run Code Online (Sandbox Code Playgroud)
问题
现在我实际上有两个问题.哪个代码更合适?在xamarin.android中它们的等效代码是什么?
提前致谢.
pixel pixels xamarin.android density-independent-pixel xamarin
我想通过在edittext外面点击来隐藏键盘.这是我的xml代码:
<RelativeLayout
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:onClick="rl_main_onClick">
<RelativeLayout
//Here there are some widgets including some edittext.
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的java代码(MainActivity):
public void rl_main_onClick(View view) {
InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)
但我必须点击两次才能隐藏键盘.第一次点击只是改变"下一步"(对于最后一个编辑文本它是"完成")输入图标,然后第二次点击隐藏键盘.这是第一次点击时发生的事情:
现在我有两个问题:
1-如何只需轻按一下即可修复并隐藏键盘?
2-是否可以对我的所有edittext(一个代码)进行此操作?
提前致谢.
我有一个表单,应该通过点击主窗体中的按钮显示,我想当用户关闭第二个窗体时,主窗体再次显示在屏幕的中心.我使用下面的代码来做到这一点:
private void button_Click(object sender, EventArgs e)
{
this.Hide(); //Hides the main form .
form2.ShowDialog(); //Shows the second form .
this.Show(); // Re-shows the main form after closing the second form ( just in the taskbar , not on the screen ) .
this.StartPosition = FormStartPosition.CenterScreen; // I write this code because I want to show the main form on the screen , not just in the taskbar .
}
Run Code Online (Sandbox Code Playgroud)
这些命令做我想要的,但问题是关闭第二个窗体后,主窗体会显示一个小跳跃,就像眨眼一样!(它不是连续的,它只是在第一个.)我想要的是顺利完成,没有任何眨眼.这怎么可能?
提前致谢.
我需要使用.png文件作为按钮.我只想向用户展示一张图片(周围没有任何额外区域).
我的问题在于设计并指定应该点击的区域.我改变了我的按钮的一些属性,但我达不到我的目的.我将FlatStyle更改为Flat或BackColor更改为Transparent,但按钮的背景周围有彩色背景.我需要完全删除背景.
我也尝试了PictureBox,但我无法再通过属性删除背景.
我正在尝试发布一个 xamarin.android 应用程序。我在 Xamarin Android 6 中使用 Visual Studio,所以我遵循了这个. 在第 2 部分中,它描述了如何创建一个新的密钥库,如下面的屏幕截图所示(您可以在此处查看完整的描述):
我不知道我应该把这个命令放在哪里。我查看了那个 keytool 链接,但找不到任何东西。我尝试了 cmd、VS2015 的 MSBuild 命令提示符和 VS2015 的开发人员命令提示符,但它们都显示了这个错误:'$' 不是内部或外部命令、可运行的程序或批处理文件。
此外,我尝试使用 Visual Studio 创建一个新的密钥库。我去了工具>Android>发布Android应用程序,我创建了一个密钥库,它出现在我指定的路径中。然后我回到那个指南并从签署 APK 继续。但是没有任何带有我指定的名称和路径的 .apk。在执行所有这些操作之前,只有 3 个 .apk 无法工作。
现在我的问题是我应该在哪里使用该命令?此外,我想知道还有其他方法可以发布 xamarin.android 应用程序吗?