OnClick不起作用。点击布局后没有任何反应。它似乎是可点击的,因为布局会改变其颜色,但新的布局不会打开。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/window"
android:layout_width="295dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/editborder"
android:clickable="true"
android:onClick="openBigImage">
以下是主要活动的更多代码:
public class MyMapActivity extends FragmentActivity implements LocationListener
{
private Marker marker;
private Hashtable<String, String> markers;
private ImageLoader imageLoader;
private DisplayImageOptions options;
private GoogleMap map;
private ListView mainListView ;
private ArrayAdapter<String> listAdapter ;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_map);
// Look up the AdView as a resource and load a request.
//AdView adView = (AdView)this.findViewById(R.id.adView);
//adView.loadAd(new AdRequest());
// Getting Google Play availability status
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());
// Showing status
if(status!=ConnectionResult.SUCCESS)
{ // Google Play Services are not available
int requestCode = 10;
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(status, this, requestCode);
dialog.show();
}
else
{// Google Play Services are available
// Getting reference to the SupportMapFragment of activity_main.xml
SupportMapFragment mapFragment = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
if (savedInstanceState == null) {
// First incarnation of this activity.
mapFragment.setRetainInstance(true);
}
else
{
// Reincarnated activity. The obtained map is the same map instance in the previous
// activity life cycle. There is no need to reinitialize it.
map = mapFragment.getMap();
}
setUpMapIfNeeded();
}
}
@Override
protected void onResume()
{
super.onResume();
setUpMapIfNeeded();
}
public void openBigImage(View v)
{
setContentView(R.layout.bigpicture);
}
bigpicture.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/bigpicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#000000"
android:orientation="vertical">
<fragment
android:id="@+id/minimap"
android:layout_width="200px"
android:layout_height="200px"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
class="com.google.android.gms.maps.SupportMapFragment" />
<ImageView
android:id="@+id/badge"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:adjustViewBounds="true" />
</RelativeLayout>
在其他情况下多次调用setContentView(),如菜单项“about”,“settings”等。 试着没有setContentView。我已经将新布局放到main.xml中并使可见性变为GONE。 OnClick方法应该将可见性更改为可见,但同样没有任何反应。 Logcat说“11-25 13:47:28.638:D / GestureDetector(3156):[Surface Touch事件] mSweepDown False,mLRSDCnt:-1 mTouchCnt:2 mFalseSizeCnt:0”当我点击线性布局时。
答案 0 :(得分:0)
保罗 有一点是使用/&gt;关闭线性布局。我假设您已经按照地图教程link进行了操作,并传递了所有清单权限和其他要求。您可能有一些理由使用px。检查是否正在创建地图。还要为徽章图像提供一些高度和背景颜色,看看是否有事情发生。
我在没有地图片段的情况下测试了你的代码,它运行正常。 你可以发布错误日志吗?
答案 1 :(得分:0)
实测值。点击InfoWindow,我们应该实现onInfoWindowClick。 但首先我们必须添加map.setOnInfoWindowClickListener(this);在主要活动中。主要活动必须实现OnInfoWindowClickListener。 我已经将新的LinearLayout添加到main.xml中,使其不可见。 这是onInfoWindowClick的代码:
@Override
public void onInfoWindowClick(Marker marker) {
LinearLayout secondLL = (LinearLayout) findViewById(R.id.bigpicture);
int visibility = secondLL.getVisibility();
if(visibility == View.GONE)
{
secondLL.setVisibility(View.VISIBLE);
}
}
答案 2 :(得分:-1)
我认为你不能使用onClick属性。 你必须像这样使用setOnClickListener():
LinearLayout layout = (LinearLayout )findViewById(R.id.window);
layout .setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
YourActivity.this.setContentView(R.layout.bigpicture);
}
});