Android-如何获取文本视图中字符的坐标

时间:2019-03-01 14:04:57

标签: android char textview character coordinates

是否可以从Android的TextView中的字符获取x坐标? 我不是在寻找TextView本身的坐标,而是需要TextView中的最后一个字符的坐标(多行)

预先感谢

3 个答案:

答案 0 :(得分:1)

以下是获取特定字符的x y坐标的方法。 offset是textView的String中所需字符的索引。这些坐标是相对于父容器的

Layout layout = textView.getLayout();
if (layout == null) { // Layout may be null right after change to the text view
    // Do nothing
}

int lineOfText = layout.getLineForOffset(offset);
int xCoordinate = (int) layout.getPrimaryHorizontal(offset);
int yCoordinate = layout.getLineTop(lineOfText);

答案 1 :(得分:0)

使用:

from  tkinter import  *
from tkinter.filedialog import *
import cv2 as cv
import numpy as np

global img
img = np.full((100,80,3), 12, np.uint8)
def loadImg():
imgTemp  = askopenfilename()
img = cv.imread(imgTemp)
print(img)


def display():
  gray_img = np.full((100,80,3), 12, np.uint8)
  gray_img = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
  faces = face_cascade.detectMultiScale(gray_img,1.02,5)
  print(type(faces))
  print(faces.shape)
  print(faces)

  for x,y,w,h in faces:
     img  = cv.rectangle(img,(x,y),(x+w,x+h),(0,255,0),3)

  resized = cv.resize(img,(int(img.shape[1]/2),int(img.shape[0]/2)))
  cv.imshow("Gray",resized)
  cv.waitKey(0)
  cv.destroyAllWindows()

class win:

 def __init__(self):
  global window
  window = Tk()
  window.title("Face-Detection___")
  window.geometry("500x500")
  #window.color("#008080")
  window.configure(background='#008080')
  button1 = Button(window,text="Upload",bg="gray",fg="teal",command=loadImg).pack()
  button2 = Button(window,text="Detect",bg="maroon",fg="white",command=display).pack()
  #window.mainloop(0)

obWin = win()

window.mainloop(0)

使用简单。您只需使用其使用的文本长度来遍历布局。

它将返回Character的x。所以我仍然从layout.getPrimaryHorizontal(int offset) 那里得到一些信息。顺便说一句,如果您使用layout.getLineTop(),请注意有些奇怪的行为,可能是一个错误。

答案 2 :(得分:0)

给出一个具有一个或多个段落的跨度,尝试获取整个跨度的最后一个字符不起作用。有没有另一种方法来获得与getPrimaryHorizo​​ntal()相同的结果?