作者:咖啡Spring_767 | 来源:互联网 | 2023-05-19 07:42
实现效果图:这里实现主要是用HorizontalScrollView加TextView实现的,实现布局代码:<?xmlversion"1.0"encoding&quo
实现效果图:
这里实现主要是用HorizontalScrollView加TextView实现的,实现布局代码:
xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_ android:layout_ android:orientation="vertical" tools:cOntext="com.example.a550211.testactivity.MainActivity"> android:id="@+id/btn_add" android:layout_ android:layout_ android:text="添加" /> android:layout_ android:layout_ android:orientation="horizontal"> android:layout_ android:layout_ android:text="sdcard>" /> android:id="@+id/scrollView" android:layout_ android:layout_ android:scrollbars="none"> android:id="@+id/tv_path" android:layout_ android:layout_ /> 2、实现HorizontalScrollView初始跳转到最右边
scrollView.post(new Runnable() { public void run() { scrollView.fullScroll(View.FOCUS_RIGHT); } });
3、完整实现代码
package com.example.a550211.testactivity; import android.app.Activity; import android.graphics.Color; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.text.Editable; import android.text.Spannable; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextPaint; import android.text.TextUtils; import android.text.TextWatcher; import android.text.method.LinkMovementMethod; import android.text.method.ScrollingMovementMethod; import android.text.style.CharacterStyle; import android.text.style.ClickableSpan; import android.text.style.ImageSpan; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.widget.Button; import android.widget.HorizontalScrollView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.StringTokenizer; public class MainActivity extends Activity { private TextView tv_path; private HorizontalScrollView scrollView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initView(); initData(); } private void initData() { // String[] spPath = mCurrentPath.split(Type.ALL_PATH); // StringTokenizer tokenizer = new StringTokenizer(spPath[1],"/"); // while (tokenizer.hasMoreTokens()){ // sbBuilder.append(tokenizer.nextToken() + " > "); // } StringBuilder sbBuilder = new StringBuilder(); for (int i = 0; i <10; i++) { sbBuilder.append("username" + i + ">"); } String likeUsers = sbBuilder.substring(0, sbBuilder.lastIndexOf(">")).toString(); tv_path.setMovementMethod(LinkMovementMethod.getInstance()); tv_path.setText(addClickablePart(likeUsers), TextView.BufferType.SPANNABLE); } private SpannableStringBuilder addClickablePart(String str) { SpannableString spanStr = new SpannableString(""); SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr); ssb.append(str) ; String[] likeUsers = str.split(">"); if (likeUsers.length > 0) { // 最后一个 for (int i = 0; i final String name = likeUsers[i]; final int start = str.indexOf(name) + spanStr.length(); ssb.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(getApplication(), name, Toast.LENGTH_SHORT).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); ds.setColor(Color.BLACK); // 设置文本颜色 // 去掉下划线 ds.setUnderlineText(false); } @Override public CharacterStyle getUnderlying() { return super.getUnderlying(); } }, start, start + name.length(), 0); } } return ssb.append(""); } private void initView() { tv_path = (TextView)findViewById(R.id.tv_path); scrollView = (HorizontalScrollView)findViewById(R.id.scrollView); scrollView.post(new Runnable() { public void run() { scrollView.fullScroll(View.FOCUS_RIGHT); } }); } }