我试图使一个在景观视图中的应用程序的引脚登录。我正在使用Dart/flutter,无法找出如何重新定位文本输入键盘。
是否可以使用类似的方式,但强制键盘位于文本字段旁边而不是文本字段下面?如何在颤振中创建数字输入字段?
键盘的位置和形状完全是设备特定的。甚至还有悬浮或分体键盘,没有办法修改系统键盘的位置。
我建议你在Flutter中构建一个“假的”数字键盘小部件。这将使您完全控制键盘的位置和大小,以及显示的数字。对于一个简单的PIN输入,您甚至不需要将其连接到真正的TextField
,这使得事情变得简单得多。
这里有一个非常基本的例子:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
home: MyLoginPage(),
);
}
}
class MyLoginPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => MyLoginPageState();
}
class MyLoginPageState extends State<MyLoginPage> {
String _pin = '';
void _onKeyPressed(int key) {
if (key == NumericalKeyboard.backspaceKey) {
if (_pin.length > 0) {
setState(() {
_pin = _pin.substring(0, _pin.length - 1);
});
}
} else {
setState(() {
_pin += key.toString();
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('LOGIN'),
),
body: Row(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
Expanded(child: _buildPage()),
NumericalKeyboard(
onKeyPressed: _onKeyPressed,
)
],
),
);
}
Widget _buildPage() {
return Padding(
padding: EdgeInsets.all(16.0),
child: Center(
child: Container(
decoration: BoxDecoration(border: Border.all()),
width: 150.0,
padding: EdgeInsets.all(4.0),
child: Text(
_pin,
textAlign: TextAlign.center,
style: TextStyle(fontSize: 32.0, letterSpacing: 2.0),
),
),
),
);
}
}
typedef KeyboardCallback(int key);
class NumericalKeyboard extends StatelessWidget {
const NumericalKeyboard({Key key, this.onKeyPressed}) : super(key: key);
static const backspaceKey = 42;
static const clearKey = 69;
final KeyboardCallback onKeyPressed;
@override
Widget build(BuildContext context) {
return Material(
color: Colors.grey[200],
child: Table(
defaultColumnWidth: IntrinsicColumnWidth(flex: 1.0),
border: TableBorder.all(),
children: [
TableRow(
children: [
_buildNumberKey(1),
_buildNumberKey(2),
_buildNumberKey(3),
],
),
TableRow(
children: [
_buildNumberKey(4),
_buildNumberKey(5),
_buildNumberKey(6),
],
),
TableRow(
children: [
_buildNumberKey(7),
_buildNumberKey(8),
_buildNumberKey(9),
],
),
TableRow(
children: [
Container(),
_buildNumberKey(0),
_buildKey(Icon(Icons.backspace), backspaceKey),
],
)
],
),
);
}
Widget _buildNumberKey(int n) {
return _buildKey(Text('$n'), n);
}
Widget _buildKey(Widget icon, int key) {
return IconButton(
icon: icon,
padding: EdgeInsets.all(16.0),
onPressed: () => onKeyPressed(key),
);
}
}
布局(activity_main.xml): 活动(MainActivity.java): 动画: 谢了。
问题内容: 所以我需要屏蔽一个SSN#输入字段,假设ssn是,我需要显示(他们输入每个数字时都是实时的),但是我仍然需要保留原始值以提交。 如果用户严格输入值,我可以做到这一点,但是如果用户执行其他任何操作(如删除或将光标移动到随机位置并添加/删除数字,复制粘贴/删除等),它就会中断如果可能的话,我真的不想听一堆事件来完成这项工作。 我还尝试过在输入字段的顶部放置一个div来显示被屏蔽的ssn,而
本文向大家介绍Android 从底部弹出Dialog(横向满屏)的实例代码,包括了Android 从底部弹出Dialog(横向满屏)的实例代码的使用技巧和注意事项,需要的朋友参考一下 项目中经常需要底部弹出框,这里我整理一下其中我用的比较顺手的一个方式(底部弹出一个横向满屏的dialog)。 效果图如下所示(只显示关键部分): 步骤如下所示: 1.定义一个dialog的布局(lay_share.x
在Twitter应用程序中,当你点击一条推文时,屏幕会向左滑动,就像页面在滑动一样。我想这是动画部分。我想在我的应用程序中找到它,但在上面找不到任何东西。在我的应用程序中,有许多片段可以多次添加/删除。每个片段上都有按钮,当我点击一个按钮时,新的片段就会出现。我希望他们像推特上的页面一样滑动。我知道ViewPager类,但这是不同的。请帮帮我。谢谢
我想让应用程序像“简易屏幕录制器”。我必须从哪里开始,因为我搜索了很多,但没有找到任何开始的链接。有任何用于创建屏幕录制器的api,而不是屏幕截图。我不想使用javacv从屏幕截图创建视频。我只想让用户启动应用程序,点击开始录制按钮,然后用户在手机上所做的一切来录制这些内容。 1) Android系统中是否有相关的api。 2) 如何在android中创建屏幕录制器应用程序。 3)是没有任何api
我试图创建一个单一活动的Android应用程序。我有带有BottomNavigationView的MainActivity (only activity),三个顶级片段和一些子片段。我的要求是,每当屏幕显示顶级片段,底部导航应该是可见的,这样切换是可能的。但是当我查看任何子片段时,底部导航应该是隐藏的。是否有任何现成的方式使用导航组件或需要手动更改可见性?