如何在文本视图中设置文本并将其格式化为代码?(Android Java)



所以问题是这样的。我正在编写应用程序,我想在TextView中显示部分"java代码",所以当我在TextView中将Text设置为一个简单的文本时。

是否可以显示所有标签颜色等类似"代码"的代码?

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import br.tiagohm.codeview.Language;
import br.tiagohm.codeview.Theme;
import io.github.kbiakov.codeview.CodeView;

/**
* A simple {@link Fragment} subclass.
*/
public class FragmentActivityTop extends Fragment implements br.tiagohm.codeview.CodeView.OnHighlightListener {
CodeView mCodeView;
int tag=0;
public FragmentActivityTop() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
//CodeProcessor.init(getContext());
View v =inflater.inflate(R.layout.activity_fragment_top, container, false);
//CodeView codeView = (CodeView) v.findViewById(R.id.code_viewjava);
String code = "   @Overriden" +
"    public View onCreateView(LayoutInflater inflater, ViewGroup container,n" +
"                             Bundle savedInstanceState) {n" +
"        // Inflate the layout for this fragmentn" +
"        View v = inflater.inflate(R.layout.fragment_xml, container, false);n" +
"n" +
"        WebView webView = (WebView)v.findViewById(R.id.webfragxml);";

mCodeView = (CodeView)v.findViewById(R.id.codeView);
mCodeView.setOnHighlightListener(this)
.setOnHighlightListener(this)
.setTheme(Theme.AGATE)
.setCode(code)
.setLanguage(Language.JAVA)
.setWrapLine(true)
.setFontSize(14)
.setZoomEnabled(true)
.setShowLineNumber(true)
.setStartLineNumber(9000)
.apply();
return v;
}

@Override
public void onStartCodeHighlight() {
}
@Override
public void onFinishCodeHighlight() {
}
@Override
public void onLanguageDetected(Language language, int i) {
}
@Override
public void onFontSizeChanged(int i) {
}
@Override
public void onLineClicked(int i, String s) {
}
}

这是我尝试执行此操作时的片段代码:mCodeView.setOnHighlightListener(此)

setOnHightkightListener油漆为红色。

08-19 18:30:37.308 17929-17929/tj.horun.las.learnandroidstudio D/AndroidRuntime: Shutting down VM

       --------- beginning of crash

08-19 18:30:37.314 17929-17929/tj.horun.las.learnandroidstudioE/AndroidRuntime:致命异常:main流程:tj.horun.las.learnandroidstudio,PID:17929android.view.InflateException:二进制XML文件行#8:二进制XML文件列#8:膨胀类io.github.kbiakov.codeview.codeview时出错引起原因:android.view.InflateException:二进制XML文件行#8:膨胀类io.github.kbiakov.codeview.codeview时出错由以下原因引起:java.lang.ClassNotFoundException:在路径DexPathList上找不到类"io.github.kbiakov.codeview.codeview"[[zip文件"/data/app/tj.horun.las.rearnandroidstudio-1/base.apk",zip文件"/doata/app/oj.horun-las.learnandroidstudio-1/split_lib_dependence_apk.apk",zip文件"/data/ap/tj.horun.las.relearnandroidstudio-1/split_lib_slice0_apk.abk",zip文件"/data/app/tj.horun-las.learnandroidstudio-1/split_lib_slice_1-apk.apk",zip文件"/data-app/tj.horun-las.learnandroidstudio-1/ssplit_lib_slice2_apk.apk",zip文件"/data_app/tj.horun.las.earnandroidstudio-1/ssplit-lib_slice_3-apk.ack",zip档案"/data/app/tj.holun.las.rearnandroidstudio-1/split_lib-slice_4-apk.apk",zip档"/data\app/tj.horun.las.elearnandroidstudio-1/split_lib_slice_5_apk.apk",zip文件"/data/app/tj.horun.las.earnandroidstudio-1/split_lib_slice_6_apk.apk",zip文件"/doata/ap/tj.horun.las.ennandroidstudio-1/ssplit_lib_slice_7_apk.apk",zip文件"/data-app/tj.horun.las.rearnandroidstudio-1/split_lib.slice_8_apk.apk.apk",zip文件"/data/app.horun.la.learnandroidstudio-1/ssplit-lib_slice9_apk.abk"],nativeLibrary目录=[/data/app/tj.horun.las.learnandroidstudio-1/lib/arm64,/system/lib64,/vender/lib64]]位于dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)位于java.lang.ClassLoader.loadClass(ClassLoader.java:380)位于java.lang.ClassLoader.loadClass(ClassLoader.java:312)在android.view.LayoutInflater.createView(LayoutInflater.java:609)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:787)在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)在android.view.LayoutInflater.rInflate(LayoutInflater.java:858)在android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)在android.view.LayoutInflater.inflature(LayoutInflater.java:518)在android.view.LayoutInflater.inflature(LayoutInflater.java:426)在tj.horun.las.elearnandroidstudio.LayoutFragment.onCreateView(LayoutFragment.java:28)在android.support.v4.app.FFragment.performCreateView(Fragment.java:2239)位于android.support.v4.app.FFragmentManagerImpl.moveToState(FragmentManager.java:1332)位于android.support.v4.app.FragageManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)位于android.support.v4.app.FFragmentManagerImpl.moveToState(FragmentManager.java:1641)在android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)在android.support.v4.app.FFragmentManagerImpl.executeOps(FragmentManager.java:2415)在android.support.v4.app.FragageManagerImpl.executeOpsTogether(FragmentManager.java:2200)在android.support.v4.app.FragageManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)在android.support.v4.app.FragageManagerImpl.execSingleAction(FragmentManager.java:2034)在android.support.v4.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:651)在android.support.v4.app.FragagePagerAdapter.finishUpdate(FragmentPagerAdaper.java:143)在android.support.v4.view.ViewPager.populate(ViewPager.java:1239)在android.support.v4.view.ViewPager.populate(ViewPager.java:1087)在android.support.v4.view.ViewPager$3.run(ViewPager.java:270)在android.view.Cchoreographer$CallbackRecord.run(Choreographer.java:874)在android.view.Cchoreographer.doCallbacks(Choreographer.java:686)在android.view.Cchoreographer.doFrame(Choreographer.java:618)位于android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)在android.os.Handler.handleCallback(Handler.java:751)在android.os.Handler.dispatchMessage(Handler.java:95)在android.os.Looper.loop(Looper.java:241)在android.app.ActivityThread.main(ActivityThreads.java:6274)08-19 18:30:37.315 17929-17929/tj.horun.las.learnandroidstudio E/AndroidRuntime:at java.lang.reflect.Method.ioke(Native Method)网址:com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)网址:com.android.internal.os.ZygoteInit.main(ZygoteNit.java:776)

您可以使用此库来启用代码高亮显示。

您可以使用CodeView库并设置所需语言的配置,然后只需使用setText,它将用您想要的任何颜色高亮显示,您可以在运行时更改主题。

是的,可以使用html。您可以使用Html.fromHtml()来设置类似java代码和颜色的文本。

最新更新