나는 사용자 정의보기가있는 XML의 FrameLayout이를 팽창 액티비티, 및 텍스트/ImageViews의 숫자가 포함 된 RelativeLayout의이 : 사용자 정의 'CanvasView'에서안드로이드 : 형제 볼 수있는 권한
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<my.package.name.CanvasView
android:id="@+id/canvas"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="24dp"
android:background="#66000000">
<TextView
android:id="@+id/toolbar_time"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:gravity="right|center_vertical"
android:textColor="#FFFFFFFF"
android:shadowColor="#000000"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="2" />
<ImageView
android:id="@+id/toolbar_notification"
android:layout_toLeftOf="@+id/toolbar_time"
android:layout_width="20dp"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:gravity="center|center_vertical" />
<TextView
android:id="@+id/toolbar_title"
android:layout_toLeftOf="@+id/toolbar_notification"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:gravity="left|center_vertical"
android:singleLine="true"
android:ellipsize="marquee"
android:textColor="#FFFFFFFF"
android:shadowColor="#000000"
android:shadowDx="1"
android:shadowDy="1"
android:shadowRadius="2" />
</RelativeLayout>
</FrameLayout>
을, I 일부 드로잉을 수행하고 onTouchEvent()
등을 가로 채기. View의 사용자 작업에 따라 TextView 중 하나, 특히 toolbar_notification을 업데이트하고 싶습니다. CanvasView 자체에서이 작업을하는 것이 가장 좋겠지 만 TextView는 하위 뷰가 아니기 때문에 findViewById()
을 통해 액세스 할 수 없습니다.
나는 this solution을 시도했지만, 액세스 할 때마다 "원인 : android.view.InflateException : 이진 XML 파일 줄 # 5 : 클래스를 확장하는 중 오류가 발생했습니다."라는 RuntimeException이 발생합니다. 부모보기 속성 :
ViewGroup parentView = (ViewGroup) getParent();
parentView.getChildCount();
의견이 있으십니까?
감사합니다,
폴
예, 내가 찾고 있던 것이 참으로 매력적이다. –