0

我无法实现文本视图的滚动和缩放。我查看了类似的问题,但无法得到任何令人满意的解决方案。我知道 webview 会更容易实现,但它无法为其中的某些关键字执行字体颜色更改。

我的代码如下。我只实现了滚动:

package com.example.myclass;


import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.method.ScrollingMovementMethod;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MotionEvent;
import android.widget.TextView;


public class viewProgramActivity<x> extends Activity{

    private SQLiteDatabase database;
    ExternalDbOpenHelper dbOpenHelper;
    private static TextView textView;
    private static final String DB_NAME = "umangdb.db";
    private String rowid;
    private String programtext;
    ScaleGestureDetector scaleGestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.viewprogram);

        registerForContextMenu(findViewById(R.id.textView1));

        dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
        database = dbOpenHelper.openDataBase();

        Intent intent=getIntent();
        rowid=intent.getStringExtra("myextra");

        String query="select * from engg_table where _id="+rowid;
        Cursor myCursor = database.rawQuery(query,null);
        myCursor.moveToFirst();

        programtext=myCursor.getString(4);
        myCursor.close();

        textView  = (TextView) findViewById(R.id.textView1);
        textView.setText(programtext);




        textView.setMovementMethod(new ScrollingMovementMethod());


        String [] keywordsred={"int","char","{","}"};
        for(String y:keywordsred)
        {
        fontcolor(y,0xffff0000);
        }

        String [] keywordspurple={"printf","scanf","#include<stdio.h>","%d","%f","%s","%c"};
        for(String y:keywordspurple)
        {
        fontcolor(y,0xFF8B008B);
        }

    }

    private void fontcolor(String text,int color) {
        textView=(TextView)findViewById(R.id.textView1);
        Spannable raw=new SpannableString(textView.getText());

        int index=TextUtils.indexOf(raw, text);
        while (index >= 0) {
          raw.setSpan(new ForegroundColorSpan(color), index, index
              + text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
          index=TextUtils.indexOf(raw, text, index + text.length());
        }
        textView.setText(raw);

      }



   @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.optionsmenu, menu);

        return true;
    }

}   

对应的 XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="@string/uecp" />

</RelativeLayout>

应该添加什么代码来启用缩放,我尝试了很多方法但没有实现。我是java和android的初学者。请详细解释

4

1 回答 1

0

通过放大TextView,意味着增加/减少字体大小TextView

你可以参考这里。它会在事件中更改 textView 的 Fontsize onTouchEvent..

希望这可以帮助..

于 2013-07-02T06:57:09.493 回答