这篇文章给大家介绍如何在Android中利用TextView实现自定义竖排,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
测试用的Activity。
public class MainActivity extends Activity implements OnTouchListener { private VerticalTextView mVerticalTextView; private TextView mTextView; private int mTextCount; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); mVerticalTextView = (VerticalTextView) findViewById(R.id.vertical_tv); mTextView = (TextView) findViewById(R.id.content_tx); mTextCount = mVerticalTextView.getText().length(); mVerticalTextView.setOnTouchListener(this); mTextView.setBackgroundColor(Color.LTGRAY); } @Override public boolean onTouch(View v, MotionEvent event) { float verticalTextViewHeight = mVerticalTextView.getHeight(); float y = event.getY(); int sectionPosition = (int) Math.ceil((y / verticalTextViewHeight) / (1f / mTextCount)) - 1; if (sectionPosition < 0) { sectionPosition = 0; } else if (sectionPosition >= mTextCount) { sectionPosition = mTextCount - 1; } String sectionLetter = String.valueOf(mVerticalTextView.getText() .charAt(sectionPosition)); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mTextView.setVisibility(View.VISIBLE); mTextView.setText(sectionLetter); break; case MotionEvent.ACTION_MOVE: mTextView.setText(sectionLetter); mTextView.setVisibility(View.VISIBLE); break; case MotionEvent.ACTION_UP: mTextView.setVisibility(View.INVISIBLE); default: break; } return true; } }