14

HTML 문자열을 표시하고 (그리고 친숙한) HTML 코드를 얻으려면 다음과 같은 코드가 필요합니다.Html.fromHtml 링크 초점 표시 문제 (ICS 및 Honeycomb)를 수정하려면 어떻게해야합니까?

// itemHtml is a String of HTML defined above 

TextView itemContent = (TextView) findViewById(R.id.itemContent); 
itemContent.setText(Html.fromHtml(itemHtml)); 
itemContent.setMovementMethod(LinkMovementMethod.getInstance()); 

HTML 문자열에 링크가 있으면 TextView는 클릭 가능하고 포커스가있는 링크를 생성합니다. 사용자가 특정 링크에 집중하면 (예 : D- 패드 사용) 링크 텍스트가 중요한 의미로 바뀌어 초점이 맞았 음을 나타냅니다.

문제는 Honeycomb (예 : Google TV) 또는 Android의 Ice Cream Sandwich 맛을 사용하여 D- 패드가있는 기기를 사용하여 동일한 패턴을 테스트 할 때 텍스트의 링크에 링크가 있음을 나타내는 눈에 띄는 표시가 없음을 나타냅니다 초점.

포커스를 얻고 있다는 것을 알고 있습니다. 왜냐하면 입력을 누르면 지정된 동작을 수행하기 때문입니다. 텍스트의 여러 링크 사이를 이동할 수도 있습니다. 현재 접속중인 링크를 추측하면됩니다. 결과적으로 사용자 환경이 좋지 않습니다.

내가 잘못하고있는 게 있습니까? 이 문제를 해결하거나이 문제를 해결할 수있는 방법이 있습니까?

답변

1

HTML.fromHTML의 작동 방법은 문자열의 다양한 문자에 다양한 효과를 적용하여 "범위"를 만드는 것입니다. 이 문제를 해결할 수있는 한 가지 방법은 다른 문자 스타일과 결합 된 ClickableSpan을 사용하여 클릭 가능한 텍스트로 색상을 지정하는 것입니다. 이전 스팬을 사용하면 콜백을 등록 할 수 있으며이 콜백은 브라우저를 열 수있는 URL을보기위한 의도를 방송 할 수 있습니다.

+0

당신이 잘못 생각한 것 같습니다. 앞에서 언급했듯이 URL을 여는 동작이 호출됩니다. 문제는 링크가 선택되었다는 시각적 표현이 없다는 것입니다. – yydl

1

Honeycomb +의 텍스트 색 상태 목록은 초점을 맞춘 상태를 다른 색으로 설정하지 않거나 색을 상수가되도록 재정의 할 수 있습니다.

는 안드로이드의 텍스트 설정/your_android_sdk_directory 안드로이드-14/데이터/입술/

의 색상 + 스타일을 확인 : 자동 링크는 = "웹"또한 도움이 될 수 있습니까?

1

가장 좋은 방법은 HTML에 CSS 스타일을 추가하는 것입니다. Android가 :hover 선택기를 지원한다는 것을 알고 있습니다. 그래서 당신은 수도 같은 권리 뭔가 :

String myLink = "<a href=\"http:\/\/google.com\">your link</a>" 
Html.fromHtml(myLink); 

과에 CSS 데이터를 포함하는 방법을 찾을 수 있습니다 : (내가하지만 난 그게 가능하다고 생각하는 방법을 잘 모르겠어요)를

a :hover { 
    color: red; 
} 

UPDATE :

질문에 대한 답변이 there 인 것 같습니다.

2

편집 : : 약간의 견과를 마친 후에 나는 결국 생각을했습니다. 해결책을 찾았습니다. 그러나이 솔루션 은 Honeycomb에서만 작동합니다. ICS는 아직 해결되지 않았습니다!

API 11에서 Android는 텍스트를 선택할 수 있는지 여부를 정의하기 위해 TextViews에 새로운 설정을 제공합니다.

당신은 그것이 텍스트 뷰에 setTextIsSelectable(true)를 사용하여 설정하거나, 앱이 이전 버전과 호환 유지하는 것은 사소한 있도록, XML에 정의 아마 최선의 방법은 XML 레이아웃 android:textIsSelectable="true"

에서 정의 할 수 있습니다.버전> = 11을 타겟팅하는지 확인하십시오. 그렇지 않으면 오류가 발생할 수 있습니다.

+0

나는 그것의 노력, 고마워 – junto

+0

@junto 당신을 환영합니다. 하지만 ICS에서도 작동합니까? – yydl