I'm working on a little personal todo list app and so far everything has been working quite well. There is one little quirk I'd like to figure out. Whenever I go to add a new item, I have a Dialog with an EditText view showing inside. When I select the EditText view, the keyboard comes up to enter text, as it should. In most applications, the default seems to be that the shift key is held for the first letter... although it does not do this for my view. There has to be a simple way to fix, but I've searched the reference repeatedly and cannot find it. I'm thinking there has to be an xml attribute for the reference loaded by the Adapter, but I can't find out what it is.
当前回答
如果您在styles.xml中编写样式,那么
删除android:inputType属性并添加以下行
<item name="android:capitalize">words</item>
其他回答
只需在EditText元素中使用android:inputType="textCapWords"即可。
例如:
<EditText
android:id="@+id/txtName"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="0.7"
android:inputType="textCapWords"
android:textColorHint="#aaa"
android:hint="Name Surname"
android:textSize="12sp" />
请参考以下链接: http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType
以编程方式
TextView firstline = (TextView) findViewById(R.id.firstline);
firstline.setAllCaps(true);
要大写,您可以对编辑文本执行以下操作:
大写:使每个单词的第一个字母大写:
android:inputType="textCapWords"
使每个句子的第一个字母大写:
android:inputType="textCapSentences"
使每个字母大写:
android:inputType="textCapCharacters"
但这只会改变键盘和用户可以改变模式写小写字母。
因此,如果你真的想要大写格式的数据,这种方法不太受欢迎,首先添加以下类:
public class CapitalizeFirstLetter {
public static String capitaliseName(String name) {
String collect[] = name.split(" ");
String returnName = "";
for (int i = 0; i < collect.length; i++) {
collect[i] = collect[i].trim().toLowerCase();
if (collect[i].isEmpty() == false) {
returnName = returnName + collect[i].substring(0, 1).toUpperCase() + collect[i].substring(1) + " ";
}
}
return returnName.trim();
}
public static String capitaliseOnlyFirstLetter(String data)
{
return data.substring(0,1).toUpperCase()+data.substring(1);
}
}
然后,
现在把每个单词都大写:
CapitalizeFirstLetter.capitaliseName(name);
只大写第一个词:
CapitalizeFirstLetter.capitaliseOnlyFirstLetter(data);
对于EditText中的资本化,您可以选择以下两种输入类型:
android:inputType=“textCapSentences” android:inputType=“textCapWords”
textCapSentences 这将使每个句子中第一个单词的第一个字母成为大写字母。
textCapWords 这将使每个单词的第一个字母作为大写字母。
如果你想要两个属性都使用|符号
android:inputType="textCapSentences|textCapWords"
在你的布局XML文件中:
将android: inputType = " textCapSentences " 在您的EditText中,将每个句子的第一个单词的首字母作为大写 或者android:inputType="textCapWords"在你的EditText有第一个字母的每个单词作为资本
推荐文章
- 何时在Android中使用RxJava,何时使用Android架构组件中的LiveData ?
- 如何在Android项目中使用ThreeTenABP
- 指定的子节点已经有一个父节点。你必须先在子对象的父对象上调用removeView() (Android)
- 我的Android设备没有出现在adb设备列表中
- 在没有安装apk的情况下获取Android .apk文件的VersionName或VersionCode
- Fragment onResume() & onPause()不会在backstack上被调用
- 如何设置基线对齐为假提高性能在线性布局?
- 如何获得当前屏幕方向?
- 如何在Android中渲染PDF文件
- 我如何解决错误“minCompileSdk(31)指定在一个依赖的AAR元数据”在本机Java或Kotlin?
- 如何改变TextInputLayout的浮动标签颜色
- Android工作室如何运行gradle同步手动?
- 如何以编程方式在我的EditText上设置焦点(并显示键盘)
- 如果在片段和活动中同时定义,则不会在片段中调用onRequestPermissionsResult
- 方法setDrawerListener已弃用