0

장치 방향 변경과 관련하여 SO에 관한 많은 질문이 있습니다. 위젯에 대해 이해할 수도 있고 그렇지 않을 수도 있습니다. textScale에 관한 구성 변경 사항에 대한 알림을 받고 싶습니다. (글꼴 크기를 가장 잘 사용해야하는 계산을하고 위젯에서 모양이 잘 보이도록 레이아웃을 조금 재정렬하십시오.)위젯이 textscale의 변경 사항을 인식하는 방법?

그런 말로하면, 나는 최선의 접근 방식이 무엇인지 궁금해하고있었습니다. 지금까지 내가 발견 :

  • 의 AppWidgetProvider가 수신 할 수없는 Intent,있다 ("당신은 명시 적으로 위해 Context.registerReceiver로에 등록하여 매니페스트에 선언 된 구성 요소를 통해이를받을 수 없습니다(). 매니페스트에 ")

  • 목록 android:configChanges="fontScale", 즉

  • 는 그런 방법 onConfigurationChanged (...이있는 RemoteViewsService있다) ...하지 리시버 (즉 위젯입니다 들어, 활동을 위해입니다) , 그러나 나는 아직 이해하지 못한다, h 오우 나는 그것을 이용하게 될 것입니다.

더 많은 대체 방법이 있습니까? RemoteViewsService를 사용해야합니까? 당신의 힌트를 가져 주셔서 감사합니다! 이것의

답변

1

없음 작동하지 않습니다 :

  • 당신은 가능성이 안드로이드에 의해 밀리 초 단위로 폐기하는 구성 요소를 등록 할 수 없습니다. 따라서 AppWidgetProvider를 등록 할 수 없기 때문에 AppWidgetProvider는 메모리에 고정되지 않습니다. 그러나 등록 된 BroadcastReceiver의 수명이 등록 된 객체에 연결되어 있기 때문에 다른 구성 요소가 BroadcastReceiver를 등록 할 수 있습니다 (자세한 설명은 아래 참조).
  • 올바르게 표시된대로 configChanges 태그는 활동에만 사용됩니다.
  • RemoteViewsService는 사례에 적용될 수도 있고 적용되지 않을 수도있는 컬렉션 뷰 (목록, 그리드 ...)를 사용할 때 사용됩니까? 어쨌든 API 11에서만 사용할 수 있으므로 Gingerbread 기기에서는 작동하지 않습니다.

옵션 1은 다소 작동합니다 (https://stackoverflow.com/a/2435879/534471). 문제는 등록 된 BroadcastReceiver가 등록 된 개체에 묶여 있다는 것입니다. 대부분의 안드로이드 구성 요소 (ContentProvider, Activity, Service)는 영원히 머물러 있지 않지만 조만간 안드로이드에 의해 파괴 될 것입니다. 최선의 방법은 START_STICKY로 서비스하는 것이 가장 좋지만 CommonsWare는 자신의 대답이 엉망이고 비효율적 인 해결책이라고 말하고 (100 % 신뢰도가 아님).

AFAIK 문제에 대한 신뢰할만한 해결책이 없습니다.

+0

답변 해 주셔서 감사합니다. 나는 그 질문을 읽었고, 당신은 그것을 연결했고, 나는 또한 나의 질문에서 그것을 언급했다고 생각했다. 적어도 그건 내 의도 였어. 그렇게하고 사용 가능한 정보를 멋지게 요약 해 주셔서 감사합니다. 필자의 경우 방향 변경이 아니라 textScale이지만 기술적 솔루션에는 영향을 미치지 않습니다. 내가 가진 문제는 사용자가 텍스트 스케일을 증가시킬 때 일부 텍스트가 더 이상 TextView에 맞지 않는다는 것입니다. 내가보기/layoutconfiguration을 조절할 수 있는지 알게 될 것이다. – AndreasEK

+0

오리엔테이션 변경 부분이 실제로 질문과 관련이 없기 때문에 제거했습니다.textScale과 오리엔테이션은 사용자 액션, 프로그래밍 방식으로 트리거, 키보드 미끄러짐 등으로 인해 여러 가지 방식으로 방향 변경이 발생할 수 있기 때문에 효과가 있습니다. 오리엔테이션 변경을 캡처하는 많은 메소드가 둘 중 하나에서 실패 할 수있는 것처럼 보입니다. 방아쇠. 어쨌든 그건 당신이 관심있는 것이 아니고 당신을위한 해결책이 없습니다, 죄송합니다. –

+0

나는 그 문제를 해결하기 위해 "setWidth"대신 "setMinWidth"라는 textviews를 사용했지만, 다른 방법을 통해 다시 그리기가 트리거 될 때까지보기가 조금 어색하게 보입니다. fontScale이 자주 바뀌기를 기대하지 않기 때문에 이것은 절충적인 선택입니다. 당신의 도움을 주셔서 감사합니다. – AndreasEK

관련 문제