繁体   English   中英

如何通过单击按钮更改textView中的文本大小

[英]how to change textsize in textView by clicking on button

我不擅长编程,特别是在android上,我已经制作了两个按钮,一个用于使文本大小变大,一个用于使文本大小变小,并且我还规定当达到文本大小以限制大小时按钮将停止增加或减少文字大小。 它不起作用,当我按btnSmall或btnBig没有任何事情发生时,我不知道这里缺少什么,请我需要帮助......这就是我所做的

Java文件:

private Button btnSmallTxt, btnBigTxt;
private tvAdminPosts;
int txtSize = 14;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.client);
    btnSmallTxt = (Button)findViewById(R.id.btnSmall);
    btnBigTxt = (Button)findViewById(R.id.btnBig);

   btnSmallTxt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (tvAdminPosts.getTextSize() == 15||tvAdminPosts.getTextSize() ==16||tvAdminPosts.getTextSize() ==17|tvAdminPosts.getTextSize() ==18){
                txtSize--;
                tvAdminPosts.setTextSize(txtSize);
            } else {
                txtSize += 0;
                tvAdminPosts.setTextSize(txtSize);
            }
        }
    });

    btnBigTxt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (tvAdminPosts.getTextSize() == 14 ||tvAdminPosts.getTextSize() == 15 || tvAdminPosts.getTextSize() == 16 || tvAdminPosts.getTextSize() == 17){
                txtSize++;
                tvAdminPosts.setTextSize(txtSize);
            } else if (tvAdminPosts.getTextSize() == 18) {
                txtSize+= 0;
                tvAdminPosts.setTextSize(txtSize);
            } else{
                txtSize+= 0;
                tvAdminPosts.setTextSize(txtSize);
            }
        }
    });

XML文件:在xml中我将textView textsize 14 sp作为我用java编写的14但是我不知道我是以正确的方式或者是什么?

<TextView
    android:id="@+id/tvAdminPosts"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1.06"
    android:textColor="#fff600"
    android:maxLines="100"
    android:textSize="14sp"
    android:scrollbars="vertical"
    android:maxLength="1000"
    android:textStyle="bold" />

<Button
   android:id="@+id/btnBig"
   android:layout_width="150dp"
   android:layout_height="wrap_content"
   android:layout_alignParentBottom="true"
   android:layout_alignParentLeft="true"
   android:text="@string/large_txt"
   android:textColor="#ffffff"
   android:textSize="7pt"
   android:textStyle="bold" />

<Button
   android:id="@+id/btnSmall"
   android:layout_width="150dp"
   android:layout_height="wrap_content"
   android:layout_alignParentBottom="true"
   android:layout_alignParentRight="true"
   android:text="@string/small_txt"
   android:textColor="#ffffff"
   android:textSize="5pt"
   android:textStyle="bold" />

我在这里搜索了很多,但我没有发现任何简单的事情,就像我想要做的那样,如果有人帮助我,我将不胜感激。 对不起,我的英语不好

根据文档getTextSize()返回文本大小(以pixelspixels ,而不是sp因为您正在定义它。

android:textSize="14sp"

将XML属性更改为

android:textSize="14px"

所以你的所有代码逻辑都有效。

或者找到一种将px值转换为sp

编辑:关于第二个问题,当您使用增加值的setTextSize()时,它将在sp设置文本大小。 同样,根据文档 ,默认情况下,此方法的单位类型为“sp”或“缩放像素”。

由于您总是在px检查文本大小,因此您的条件无效,因此没有任何反应。

解决方案是在您的情况下指定所需的单位类型,即像素。 所以你必须使用:

tvAdminPosts.setTextSize(TypedValue.COMPLEX_UNIT_PX, yourSizeValue);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM