我想制作按钮来调整我的文本。有一些按钮可以使文本视图变大、变小,在斜体和粗体之间来回切换。
我想编辑名为“text”的文本视图
在下面的代码中,当我单击“butBig”或“butSmall”按钮时,两个按钮都做了相同的事情,它使我的文本大小增加,但不是增加5,它变得非常大。当我再次点击任意一个按钮时,TextView消失了,就像它对于框架来说太大了一样。
butBig.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float size = text.getTextSize();
text.setTextSize(size + 5.0F);
}
});
butSmall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float size = text.getTextSize();
text.setTextSize(size - 5.0F);
}
});
对于斜体和粗体,我这里的代码确实有效,但有时当我单击这些按钮中的任何一个时,应用程序会无缘无故地崩溃。
butItalic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (text.getTypeface().getStyle() == Typeface.BOLD) {
text.setTypeface(null, Typeface.BOLD_ITALIC);
} else if (text.getTypeface().getStyle() == Typeface.ITALIC) {
text.setTypeface(null, Typeface.NORMAL);
} else if (text.getTypeface().getStyle() == Typeface.NORMAL) {
text.setTypeface(null, Typeface.ITALIC);
} else if (text.getTypeface().getStyle() == Typeface.BOLD_ITALIC) {
text.setTypeface(null, Typeface.BOLD);
}
}
});
butBold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (text.getTypeface().getStyle() == Typeface.ITALIC) {
text.setTypeface(null, Typeface.BOLD_ITALIC);
} else if (text.getTypeface().getStyle() == Typeface.BOLD) {
text.setTypeface(null, Typeface.NORMAL);
} else if (text.getTypeface().getStyle() == Typeface.NORMAL) {
text.setTypeface(null, Typeface.BOLD);
} else if (text.getTypeface().getStyle() == Typeface.BOLD_ITALIC) {
text.setTypeface(null, Typeface.ITALIC);
}
}
});
请帮我做这个
非常感谢。
编辑:这是我的日志:)
---------碰撞开始11-05 05:34:17.581 2416-2416/com。实例text调整E/AndroidRuntime:致命异常:主进程:com。实例textadjust,PID:2416 java。lang.NullPointerException:尝试调用虚拟方法“int android”。图样字体。在com的空对象引用上。实例text调整。主要活动3美元。android上的onClick(MainActivity.java:57)。看法看法android上的performClick(View.java:5198)。看法查看$PerformClick。在android上运行(View.java:21147)。操作系统。处理程序。android上的handleCallback(Handler.java:739)。操作系统。处理程序。android上的dispatchMessage(Handler.java:95)。操作系统。活套。android上的loop(Looper.java:148)。应用程序。活动线程。java上的main(ActivityThread.java:5417)。郎。反思。方法在com上调用(本机方法)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:726)。Android内部的操作系统。合子岩。main(ZygoteInit.java:616)11-05 05:34:19.734 2416-2416/?I/Process:发送信号。PID:2416信号:9
到目前为止,您应该知道的是您正在使用该方法进行的TextSize的大小:
text.setTextSize(size + 5.0F);
大小单位是被称为像素,如果您想知道或想使用dp
中的大小,这里是将像素更改为dp
的方法:
public int getDp(int px) {
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
return dp;
}
将此方法添加到您的clas中!但是,或者(我建议)您可以使用以下方法:
setTextSize(int unit, float size);
其中,参数int unit可以取这个stackoverflow答案给出的值:
TypedValue.COMPLEX_UNIT_PX //Pixels
TypedValue.COMPLEX_UNIT_SP //Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP //Device Independent Pixels
对于另一个问题,添加一些崩溃日志!找出可能的错误,我会编辑我的答案以添加它!!
但到目前为止,我的建议是减少条件,使用开关,而不是if和else,并确保在调用这些方法之前,TextView有一个文本。添加一些日志以确保发生了什么!
编辑崩溃,因为我猜测崩溃的原因是NullPointerException。这可能是由于您的变量TextView为null引起的。可能的原因是它没有仅在onCreate()中分配,或者分配时没有文本可显示(我猜)解决方案:因为您将在整个类中使用文本视图,将其声明为类变量,并将其赋值为onCreate,如果其活动或
onCreateView,如果
片段:在任何方法之前,就在类内部:
private TextView text;
然后在“创建”内部将其指定为:
text=(TextView)findViewById(R.id.your_text_view_id); //Replace with a real id
并在
xml
或java
代码中设置默认文本或Typeface
。现在您可以在类中的任何地方访问TextView
变量,它不会为null
。
为了提高性能和易读性,再次使用
开关
代替if
和etc
。
如何在java中向文本视图添加样式?我试图在我的价值观/风格下添加一个。xml,而不是单独添加每个属性。
使用Styles(样式)窗格修改与元素关联的CSS样式。 TL;DR Styles(样式)窗格允许您以尽可能多的方式更改本地CSS,包括编辑现有样式,添加新样式,添加样式规则。 如果你想要样式持久(他们页面重新加载而丢失),您需要将它们持久化到您的开发工作区。 检查应用到元素的样式 选择一个元素[Select an element] 来检查它的样式。Styles(样式)窗格将显示所有应用于所选元素
我想将文本从软键盘输入到popupwindow中的Edittext小部件,但我遇到了一些问题。我的活动是一个游戏卡桌,并在上面启用一些动画。在游戏表中,有一些按钮。如果玩家点击某个按钮,将显示一个弹出窗口。问题是播放器无法在弹出窗口中输入文本到Edittext。我发现了一些类似的问题,最流行的建议是: 使用此设置,我可以正常输入Edittext。但是,这将阻止主UI线程并导致停止游戏表中的动画。我
在MultiAutoCompleteTextView上应用样式:问题是因为OP打算覆盖样式未声明的某些属性。这不是我的问题。 android:MultiAutoCompleteTextView风格,如gmail:这里,OP想要设置与gmail相同的风格,答案显示2 API。此外,没有显示XML代码。因此,这与我的问题和期望大不相同。 我的材质样式似乎没有应用。更准确地说,我只是想让我的(材料!)小
我在我的文件中有这个代码,但是当在编辑文本中键入任何值并按下按钮时,相关的字符串不会打印。如何使其在按下按钮时,根据在编辑文本槽中输入的字符串显示特定文本?
这需要为N级…当用户点击添加电话视图将被添加… 怎么做??