给出以下带有自定义视图“RowWrapperView”的示例布局:
(row_item.xml)
<?xml version="1.0" encoding="utf-8"?>
<com.example.android.RowWrapperView
xmlns:android="http://schemas.android.com/apk/res/android"
... >
<Button android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</com.example.android.RowWrapperView>
视图有一个膨胀的布局(view_row_wrapper.xml),其中的LinearLayout的id为“R.id.container”:
public class RowWrapperView extends RelativeLayout {
public RowWrapperView(Context context) {
super(context);
init();
}
public RowWrapperView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public RowWrapperView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public LinearLayout container;
private void init() {
inflate(getContext(), R.layout.view_row_wrapper, this);
container = (LinearLayout) findViewById(R.id.container);
}
}
(view_row_wrapper.xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
... >
<LinearLayout
android:id="@+id/something"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button android:id="@+id/test"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
...
</LinearLayout>
<LinearLayout
android:id="@+id/container"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<!-- Trying to get the content of the view here -->
</LinearLayout>
<LinearLayout
android:id="@+id/something_else"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
...
<TextView
android:id="@+id/message_sender"
tools:text="Jon Snow"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</LinearLayout>
我要做的是在R.id.container中获取“RowWrapperView”(row_item.xml)的内容。
我错过了什么吗?
答案 0 :(得分:0)
Inflater有返回类型 - 视图,您必须将此视图添加到布局中然后搜索它 在不添加布局视图的情况下尝试此操作
private void init() {
View view = inflate(getContext(), R.layout.view_row_wrapper, this);
container = (LinearLayout) view.findViewById(R.id.container);
}
或添加到布局
private void init() {
View view = inflate(getContext(), R.layout.view_row_wrapper, this);
addView(view);
container = (LinearLayout) findViewById(R.id.container);
}
答案 1 :(得分:0)
我想你可能会这样做:
class Feature
用于将所有元素添加到容器中。