我正在尝试制作某种可以添加内容的按钮,就像对FrameLayout一样。例如:
<ch.pboos.android.ui.ContentButton ...>
<LinearLayout ...>
<TextView .../>
<TextView .../>
</LinearLayout>
</ch.pboos.android.ui.ContentButton>
到目前为止,我发现了一个xml文件,它代表了我希望按钮看起来如何:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/white_button_margin"
android:paddingRight="@dimen/white_button_margin">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content" android:orientation="horizontal"
android:padding="@dimen/white_button_padding"
android:background="@drawable/channel_bg">
<FrameLayout android:id="@+id/content" ...>
<!-- content -->
</FrameLayout>
<ImageView ... android:src="@drawable/right_triangle" />
</LinearLayout>
</LinearLayout>
现在我想创建一个自定义的FrameLayout(ch.pboos.android.ui.ContentButton)来添加该视图,并允许我将视图添加到上面那个xml的内容区域。
有关如何使其正常工作的任何建议吗?
答案 0 :(得分:1)
1)通过覆盖dispatchTouchEvent将ContentButton上发生的所有触摸事件发送到自定义按钮。并添加单击侦听器到此按钮(这有助于您识别和处理仅点击,而不是例如移动)
2)以这种方式覆盖addView:
addView(...) {
if(inflatingInProgress) {
super.addView(view);
}
else {
// add view to @+id/content
}
}
// where flag inflatingInProgress initially = true and is set to false after
// finishing inflating the layout for ContentButton
希望这会有所帮助。祝你好运。