Bir görünümü tanımladım, RelativeLayout
genişletilmiş, ben onun düzeni xml dosyasında belirtilir onun çocukları ayıklamak istiyorum.FindViewById özel görünümde çocuk görünümü bulmak için
HeaderView.java
yılında:
1 package com.example.test;
2
3 public class HeaderView extends RelativeLayout {
4
5 public HeaderView(Context context, AttributeSet attrs) {
6 this(context, attrs, 0);
7
8 TypedArray arr = context.obtainStyledAttributes(attrs, R.styleable.HeaderView, 0, 0);
9
10 int headerId = 0;
11 int containerId = 0;
12
13 // find attributes
14 if (arr != null) {
15 if (arr.hasValue(R.styleable.HeaderView_headerview_header)) {
16 headerId = arr.getResourceId(R.styleable.HeaderView_headerview_header, 0);
17 }
18 if (arr.hasValue(R.styleable.HeaderView_headerview_container)) {
19 containerId = arr.getResourceId(R.styleable.HeaderView_headerview_container, 0);
20 }
21 arr.recycle();
22 }
23
24 Log.d("test", String.format("headerId: %s, containerId %s", headerId, containerId));
25 // headerId: 2131296260, containerId 2131296259
26
27 // here: mHeaderContainer is null
28 mHeaderContainer = (RelativeLayout) findViewById(headerId);
29 mContentViewContainer = (RelativeLayout) findViewById(containerId);
30 }
31 }
ben headview_attrs.xml
yılında niteliğini tanımlanmış:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="HeaderView">
<attr name="headerview_header" format="reference" />
<attr name="headerview_container" format="reference" />
</declare-styleable>
</resources>
ben activity_headerview.xml
yılında, bir düzen xml dosyasında bu görünümü kullanın: Burada
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:test="http://schemas.android.com/apk/res/com.example.test"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.example.test.HeaderView
android:layout_width="match_parent"
android:layout_height="match_parent"
test:headerview_container="@+id/headerview_content"
test:headerview_header="@+id/headerview_header" >
<RelativeLayout
android:id="@+id/headerview_header"
android:layout_width="match_parent"
android:layout_height="30dp" >
</RelativeLayout>
<RelativeLayout
android:id="@+id/headerview_content"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</RelativeLayout>
</com.example.test.HeaderView>
</RelativeLayout>
sorun geliyor: HeaderView.java, line 28, 29, mHeaderContainer
ve mContentViewContainer
boştur.
O activity_headerview.xml
böyle görünüyor kimin id RelativeLayout
headerview_header
ve kimin id headerview_content
HeaderView
çocukları olmayan RelativeLayout
olduğunu.
Yanlış bir şey mi yaptım? Herhangi bir yardım çok iyi olacaktır!
Yardımlarınız için teşekkür ederim, günümü kurtarırsınız. – srain