2017-09-14 6 views
0

프로그래밍 방식으로 textView 너비를 설정하고 싶습니다. 너비는 textView의 텍스트 (값) 길이에 따라 달라집니다. textView의 텍스트가 줄 바꿈되어서는 안됩니다. textView의 텍스트가 "OLA OMO ALARE"인 경우이 문자열 (13)의 길이를 사용하여 lp.width를 설정하는 올바른 값을 파생시키는 방법은 무엇입니까?textView 텍스트 길이에서 레이아웃 매개 변수 너비를 도출

LayoutParams lp = tv.getLayoutParams(); 
    lp.width = 
    tv.setLayoutParams(lp); 

아래 코드를 시도했지만 폭이 충분하지 않아서 텍스트가 자동으로 textView에 래핑되었습니다.

lp.width = Math.round( tv.getPaint().measureText(tv.getText().toString()))) 

감사합니다.

+0

왜 WRAP하지 않으시겠습니까? 매우 똑 바른 앞으로. –

답변

0

1)이를 위해 Rect 인스턴스를 사용해야합니다.

2) 그런 다음 textview의 getPaint()getTextBound() 방법에서 이것을 사용해야 텍스트보기의 텍스트를 넣을 수 있습니다.

3) 끝에는 Rect 인스턴스의 너비 만 가져옵니다.

코드가 여기에 구현 된 모든 단계가 있습니다. 테스트를 완료했는데 정상적으로 작동합니다. 희망이 도움이됩니다.

TextView textView = new TextView(this); 
    textView.setText("AALAP"); 
    Rect rect = new Rect(); 
    textView.getPaint().getTextBounds(textView.getText().toString(), 0, textView.getText().length(), rect); 
    Log.d(TAG, "onCreate: width: "+rect.width()); 
+0

당신의 신속한 응답을 보내 주셔서 감사합니다. 나는 당신의 권고를 따랐지만 파생 너비가 충분히 길지 않아 텍스트가 자동으로 textview에 싸여있었습니다. 내 코드 : statusCodeTitle.setText ("Status Code_loplop :"); statusCodeTitle.getPaint(). getTextBounds (statusCodeTitle.getText(). toString(), 0, statusCodeTitle.getText(). length(), rect); titleMaxWidth = rect.width(); rect.width() 반환 됨 189 감사합니다. – Ola

0

상수는 ViewGroup.LayoutParams.WRAP_CONTENT입니다.

ViewGroup.LayoutParams params = myTextView.getLayoutParams(); 
params.width = ViewGroup.LayoutParams.WRAP_CONTENT; 
myTextView.setLayoutParams(params);