Mam kilka bardzo podobnych układów dla mojego AppWidget
, w rzeczywistości różniących się tylko obrotem jednego z elementów TextView
(wybieram odpowiedni układ oparty na orientacji ekranu).Ponowne używanie układów w przypadku AppWidget
Więc zamiast powtarzać te same rzeczy wiele razy (nienawidzę powtarzania) myślałem, że spróbuję uporządkować rzeczy przez Re-using Layouts with <include/>
.
Problem pojawia się, gdy próbuję odnieść się do określonych elementów układu według identyfikatora. W przypadku, gdy element znajduje się w załączonym pliku XML układu na non układów -AppWidget Użyłem metody opisane here, w przypadku zastosowania podejścia dwupoziomowy ...
W „macierzystej” układ:
<include layout="@layout/my_layout" android:id="@+id/textview_layout" />
w kodzie:
TextView tv = (TextView)findViewById(R.id.textview_layout).findViewById(R.id.textview);
tv.setText("test");
... gdzie identyfikator TextView
w "dziecko" układ jest textview
. Jest to podejście dwustopniowe, w którym po raz pierwszy odwołujesz się do View
zawierającego żądany kod , a następnie odwołujesz się do tego TextView
.
Ale dla AppWidgets, zamiast zajmować się bezpośrednio z TextView
, musisz zrobić wszystko poprzez RemoteViews
.
Więc zamiast:
TextView textView = (TextView)findViewById(viewId);
textView.setText("text");
trzeba by zrobić:
remoteViews.setTextViewText(viewId, "text");
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
Biorąc pod uwagę, że interfejs do RemoteViews
jest w drodze przechodząc w jednym (bezpośredni) Zobacz ID, jak Czy odwołujesz się do elementu w dołączonym pliku?
Dzięki. Zakładam, że jest tak, że odpowiedni układ może być automatycznie wybrany przez system operacyjny na podstawie orientacji ekranu? Niestety w moim przypadku nie jest to tak proste, ponieważ nawet jeśli ekran jest np. naprawione w orientacji pionowej, muszę przełączać się między różnymi układami na podstawie wymiarów widgetu (jeśli widget jest wysoki i wąski, układ byłby obracany ... jako opcja użytkownika). – drmrbrewer
jeśli jest tak, że możesz ustawić programowo to jest łatwe, sprawdź samouczek. możesz także użyć fragmentów, które są lepsze dla twojej sutacji. Dziękuję Ci – Jois