我的地图布局中包含页脚布局。页脚有3个ImageButtons。我尝试了一切以确定能够捕获点击但没有成功。我只需要在这个活动中使用页脚,所以如果可能的话,我认为没有必要创建一个额外的类文件。
footer.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:weightSum="4"
android:clickable="true"
android:background="@drawable/footer">
<ImageButton
android:id="@+id/guardianButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginBottom="10dp"
android:clickable="true"
android:layout_weight="1"
android:background="@drawable/guardianbutton" >
</ImageButton>
<ImageButton
android:id="@+id/sosButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:clickable="true"
android:background="@drawable/sosbutton"
android:paddingLeft="5dp"
android:layout_weight="2"
android:paddingRight="5dp" />
<ImageButton
android:id="@+id/settingsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/sosButton"
android:layout_gravity="bottom"
android:layout_marginBottom="10dp"
android:layout_weight="1"
android:background="@drawable/settingsbutton" >
</ImageButton>
</LinearLayout>
</merge>
mapviewmain.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MapViewMain"
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@layout/header"
class="com.google.android.gms.maps.SupportMapFragment" />
<!-- Header Starts-->
<LinearLayout
android:orientation="vertical"
android:id="@+id/header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@layout/header"
android:paddingTop="5dip"
android:paddingBottom="5dip">
</LinearLayout>
<!-- Header Ends -->
<!-- Footer Start -->
<RelativeLayout android:id="@+id/RelativeLayout03"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<include layout="@layout/footer" /></RelativeLayout>
<!-- Footer Ends -->
</RelativeLayout>
所有内容都正确显示。我只是无法访问ImageButtons的onclick监听器。到目前为止,我尝试了以下内容:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.footer, container, false);
container.addView(view);
ImageButton loadmore = (ImageButton) view.findViewById(R.id.sosButton);
loadmore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(MapViewMain.this, "SOS Button pressed", Toast.LENGTH_LONG).show();
}
});
return view;
}
答案 0 :(得分:1)
因为您的片段不包含图像按钮。你的mapviewmain.xml在你的活动之下,所以你必须这样做。
class MainFragmentActiviy extend FragmentActivity
{ public ImageButton loadmore;
onCreate(Bundle savedInstanceState)
{
setContentView(R.layout.mapvuewmain.xml);
loadmore=findViewById(R.id.sosButton);
}
}
并在你的片段中
public void OnCreate(Bundle SavedInstanceState)
{
MainFragmentActiviy yourActivity=getActivity();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.footer, container, false);
yourActivity.loadmore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(MapViewMain.this, "SOS Button pressed", Toast.LENGTH_LONG).show();
}
});
return view;
}