我在屏幕上添加了另一个片段。此屏幕已在SupportMapFragment中包含MapView,因此添加的Fragment应位于MapView之上。这个新视图覆盖了屏幕的2/3和地图的大部分,但是当我在视图上滚动时,它会滚动下面的MapView。这不是我的预期,因为新的View添加在MapView之上。新视图存在一个相对布局,其中包含一个包装内容的ImageView。因此,当在imageview上滚动(完全没有功能)时,它会滚动MapView。任何人都可以解释为什么会发生这种情况,如果可能的话,为我提供解决方案吗?
编辑:
基本上我有一个填充整个屏幕的MapView。此代码设置我的mapview:
public void setUpMapIfNeeded(int satelliteMode, LatLng startPoint, float zoomLevel) {
// Do a null check to confirm that we have not already instantiated the map.
if (mapView == null) {
// Try to obtain the map from the SupportMapFragment.
mapView = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapview))
.getMap();
// Check if we were successful in obtaining the map.
if (mapView != null) {
setUpMap(satelliteMode, startPoint, zoomLevel);
}
}
}
private void setUpMap(int satelliteMode, LatLng startPoint, float zoomLevel) {
// more settings
}
然后,当用户点击标记时,必须在地图视图的顶部显示片段。
public void createDetailView() {
detailView = new DetailViewFragment();
android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.viewLayout, detailView).commit();
fragmentManager.executePendingTransactions();
}
一切正常。显示视图(大约占整个屏幕的2/3),但用户可以在滑动详细视图时滚动地图。 detailview包含一个包含大量文本和按钮的相对布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginTop="45sp">
<!-- a lot of text and buttons here -->
</RelativeLayout>
答案 0 :(得分:0)
所以我还没有找到适当的方法来解决这个问题。相反,我只是禁用了mapview上的所有触摸和点击,当另一个视图位于mapview的顶部时,btw正常工作。
答案 1 :(得分:0)
为了防止它可能仍然相关,我处理这种布局的方式(一个视图显示在“另一个视图之上”)是使用LinearLayout
而不是RelativeLayout
以下方式:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<SomeView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<PopOutView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="2"
android:visibility="gone" />
</LinearLayout>
在您的情况下,地图将是SomeView
,相对布局是PopOutView
。然后在代码中,只要您希望它显示,您就可以调用popOutView.setVisibility = View.VISIBLE
。它缩小了第一个视图而不是在顶部绘制(因此具有不同的视觉效果),但至少这样触摸事件应该转到右视图。
答案 2 :(得分:0)
将片段的布局可点击属性设置为true。它会阻止触摸事件向下传播。
Awh::ArrayWithHash<uint64_t, uint64_t> x;
dict.Reserve(100000000, 0); //preallocate array part
for (uint64_t i = 2; i <= 100000000; i++) {
if (i % 2 == 0) {
x.Set(i, (3 * x.Get(i/2) + 2 * x.Get(i/4)) & 1152921504606846975ULL);
}
...