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

时间:2014-12-30 00:13:28

标签: java android xml

我不擅长编程,特别是在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编写,但是我没有 知道我是以正确的方式还是什么?

<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" />

我在这里搜索了很多,但我没有找到像我想做的那样简单的事情 如果有人帮我,我将不胜感激。抱歉我的英文不好

1 个答案:

答案 0 :(得分:3)

根据documentationgetTextSize()会在pixels中返回文字大小,而不是sp,因为您正在定义它。

android:textSize="14sp"

将XML属性更改为

android:textSize="14px"

所以你的所有代码逻辑都能正常工作。

或者找到将px值翻译为sp的方法。

修改:关于第二个问题,当您使用setTextSize()增加值时,会将文字大小设置为sp。同样,根据documentation,默认情况下,此方法的单位类型为&#34; sp&#34;或&#34;缩放像素&#34;。

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

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

tvAdminPosts.setTextSize(TypedValue.COMPLEX_UNIT_PX, yourSizeValue);