我正在努力解决这个问题几个小时,我无法找到确定键盘是否显示的方法.
我已经看到了关于这个问题的多个问题和答案,这取决于容器布局的高度变化.因此,当(例如)Edittext获得焦点时,无法准确检测到键盘的打开,因此,全高度布局的变化及其视图是不可避免的.
解决方案1: 我通过从所有EditText中删除焦点来解决这个问题,并在Edittext聚焦时改变我不需要它们的视图的可见性(提供可用空间以防止视图混乱)所以我有足够的删除冗余视图的时间.
但是无法检测何时要求关闭键盘以使视图可见.
如果我使用我在第2段中提到的常用方法来检测键盘的关闭,它将失败我的"解决方案1".
我现在唯一的想法是通过监视键盘关闭来检测键盘关闭.我无法在onKeyDown方法中检测到它.
那么如何监控这个密钥呢?
任何指导和想法将不胜感激.提前致谢.
最终解决方案:
感谢@Nick Cardoso,我的最终解决方案是onTouchListener用于检测键盘开放性和Nick的关闭解决方案的组合.
这是针对Edittexts的onTouchListener:
View.OnTouchListener TouchListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
Container.getViewTreeObserver().removeOnGlobalLayoutListener(gll);
recyclerView.setVisibility(View.GONE);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
Container.getViewTreeObserver().addOnGlobalLayoutListener(gll);
}
}, 100);
}
return false;
}
};
Run Code Online (Sandbox Code Playgroud)
ViewTreeObserver.OnGlobalLayoutListener gll = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect measureRect = new Rect();
Container.getWindowVisibleDisplayFrame(measureRect);
int keypadHeight …Run Code Online (Sandbox Code Playgroud) 在我的软件中,用户可以使用 Pandas 加载不同类型的数据集。如果软件安装在具有英语语言环境的 Windows 上,其中小数分隔符是点 (.),我将将此字符传递给 exampleread_csv函数。喜欢:
df = pd.read_csv("example.csv", decimal='.')
Run Code Online (Sandbox Code Playgroud)
但它也可以安装在例如德语区域 PC 上,其中小数点分隔符为逗号 (,)。我可以使用以下方式获取当前本地:
import locale
locale.getdefaultlocale()
Run Code Online (Sandbox Code Playgroud)
但在德语本地语言中,分隔符也可能是点 (.)。现在的问题是我如何明确知道Python中的小数分隔符是什么,以便我可以正确解析数据集?
我正在使用 vs2013 并使用 asp.net mvc 5 创建我的 Web 应用程序。为了进行个人身份验证,我正在使用Identity 2.0。
当我创建我的 Entitymodel.edmx 时,它会自动在 web.config 中为我的数据库生成新的连接字符串,如下所示:
<add name="myEntities" connectionString="metadata=res://*/Models.mEntity.csdl|res://*/Models.mEntity.ssdl|res://*/Models.mEntity.msl;provider=System.Data.SqlClient;provider connection string="data source=(LocalDB)\v11.0;attachdbfilename=|DataDirectory|\Shop.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
Run Code Online (Sandbox Code Playgroud)
我想Identity使用代码优先方法来创建数据库并连接到另一个连接字符串(DefaultConnection),例如:
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-testauthentication-20151116011628.mdf;Initial Catalog=aspnet-testauthentication-20151116011628;Integrated Security=True"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
因此,当我第一次运行项目时,它会创建新的.mdf文件,名称为
aspnet-testauthentication-20151116011628.mdf
并在其中创建表。但我想要的是让Identity连接到我已经创建的名为 : Shop.mdf 的数据库并在其中创建它的表。所以我把我的连接字符串名称ApplicationDbContext放在 IdentityModel.cs 的类中,如下所示:
public ApplicationDbContext()
: base("myEntities", throwIfV1Schema: false)
{
}
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
实体类型 ApplicationUser 不是当前上下文模型的一部分。
那么这样做的适当和正确的方法是什么?
多谢
更新:
我在现有数据库和DefaultConnection 中使用完全相同的名称创建了 Identity 表以连接到现有数据库,现在我收到此错误:
无法创建文件 'c:\users\mohamad\documents\visual studio 2013\Projects\Shop\Shop\App_Data\Shop.mdf',因为它已经存在。更改文件路径或文件名,然后重试该操作。创建数据库失败。无法创建列出的某些文件名。
为什么当有数据库甚至表时,身份尝试创建数据库?
解决方案:
第 1 …
在我的数据库中,我有“位置”和“图像”表。“图像”有一个来自 Place 的外键,这意味着每个地方可以有多个图像。
我选择这样的地方:
var query = (from x in DB.Places
where x.CityId == CityId
select x).ToList();
Run Code Online (Sandbox Code Playgroud)
当我想通过以下方式访问其图像时:query.Images.toList();我收到此错误:
ObjectContext 实例已被释放,不能再用于需要连接的操作。
我的选择查询应该如何才能通过一个选择查询获得一个地方和它的图像?
在此先感谢
MA。
c# ×2
android ×1
asp.net ×1
asp.net-mvc ×1
dataframe ×1
keyboard ×1
pandas ×1
python ×1
python-3.x ×1