- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 SlidingUpPanel它由顶部布局中的谷歌地图和底部面板中的 ListView 组成。布局也有一个 anchor 。我遇到的问题是,很多时候当我将面板从 anchor 滑动到折叠状态时,它会卡在中间,这样我必须多次滑动才能从 anchor 移动到折叠状态。为什么会发生这种情况,我该如何解决?
xml
<com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sothree="http://schemas.android.com/apk/res-auto"
android:id="@+id/sliding_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="bottom"
sothree:umanoShadowHeight="0dp"
sothree:umanoScrollableView="@+id/rvOrderHistory"
sothree:umanoInitialState="anchored"
sothree:umanoPanelHeight="110dp"
sothree:umanoFadeColor="@android:color/transparent"
>
<!--xmlns:app="http://schemas.android.com/tools"-->
<RelativeLayout
android:id="@+id/maincontent_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
>
<RelativeLayout
android:id="@+id/maplayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView
android:id="@+id/ren"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="80dp"
android:layout_marginRight="@dimen/ten_dp"
android:src="@drawable/ryuh" />
<include
layout="@layout/search_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</RelativeLayout>
</RelativeLayout>
<LinearLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
>
<ListView
android:id="@+id/uuygu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="@drawable/line_divider"
android:drawSelectorOnTop="false"
android:fastScrollEnabled="false"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:scrollbars="none" />
</LinearLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
搜索布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent"
android:elevation="@dimen/five_dp">
<AutoCompleteTextView
android:id="@+id/address"
android:layout_width="match_parent"
android:layout_height="@dimen/fourty_dp"
android:layout_gravity="top"
android:elevation="@dimen/five_dp"
android:layout_margin="@dimen/ten_dp"
android:background="@color/white_transpirancey"
android:drawableRight="@drawable/search_icon"
android:padding="@dimen/ten_dp"
android:imeOptions="actionSearch"
android:singleLine="true"
android:textColor="@color/black"
android:textColorHint="@color/gray_variant_2"
android:textSize="@dimen/fifteen_sp" />
</LinearLayout>
代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mContext = getActivity();
View rootLayout = LayoutInflater.from(getActivity()).inflate(R.layout.ljg_fragment, null);
mSlidingLayout = (SlidingUpPanelLayout) rootLayout.findViewById(R.id.sliding_layout);
.
.
.
mSearchAdapter = new SearchAdapter(mContext);
mSlidingLayout.setAnchorPoint(0.4f);
mSlidingLayout.setDragView(mListLayout);
mSlidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.ANCHORED);
height = mMapLayout.getHeight();
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
switch (screenSize) {
case Configuration.SCREENLAYOUT_SIZE_XLARGE:
mLargeScreen = true;
break;
case Configuration.SCREENLAYOUT_SIZE_LARGE:
mLargeScreen = true;
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
mLargeScreen = false;
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
mLargeScreen = false;
break;
default:
mLargeScreen = false;
}
if (googleMap == null) {
googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap.getUiSettings().setCompassEnabled(false);
googleMap.setIndoorEnabled(false);
googleMap.getUiSettings().setMapToolbarEnabled(false);
}
mSlidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
}
@Override
public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
if (newState == SlidingUpPanelLayout.PanelState.ANCHORED) {
googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(Double.parseDouble(AppPreferences.getLat(mContext)), Double.parseDouble(AppPreferences.getLong(mContext)))));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(17), 2000, null);
refreshBtn.setPadding(0, 0, 10, refreshIconMargin);
} else if (newState == SlidingUpPanelLayout.PanelState.COLLAPSED) {
googleMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(Double.parseDouble(AppPreferences.getLat(mContext)), Double.parseDouble(AppPreferences.getLong(mContext)))));
googleMap.animateCamera(CameraUpdateFactory.zoomTo(16), 2000, null);
refreshBtn.setPadding(0, 0, 10, 10);
}
}
});
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
...
}
});
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
....
}
});
searchtaxt.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) {
InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(actvAddress.getWindowToken(), 0);
callXYZApi();
}
return false;
}
});
rvList.setOnScrollListener(new EndlessScrollListener() {
@Override
public boolean onLoadMore(int page, int totalItemsCount) {
callXYZApi();
}
return true; // ONLY if more data is actually being loaded; false otherwise.
}
});
return rootLayout;
}
根据Aman的回答贴出了从anchor到collapsed状态的日志-
06-21 11:39:40.604 1502-1502/TEST: onPanelStateChanged: prevoius state : ANCHORED new state: DRAGGING
06-21 11:39:40.604 1502-1502/TEST: onPanelSlide: 0.3428332
06-21 11:39:40.620 1502-1502/TEST: onPanelSlide: 0.27158424
06-21 11:39:40.628 1502-1502/TEST: onPanelSlide: 0.25062868
06-21 11:39:40.637 1502-1502/TEST: onPanelSlide: 0.21961442
06-21 11:39:40.653 1502-1502/TEST: onPanelSlide: 0.16680637
06-21 11:39:40.670 1502-1502/TEST: onPanelSlide: 0.122380555
06-21 11:39:40.686 1502-1502/TEST: onPanelSlide: 0.08968986
06-21 11:39:40.702 1502-1502/TEST: onPanelSlide: 0.064543165
06-21 11:39:40.718 1502-1502/TEST: onPanelSlide: 0.04526404
06-21 11:39:40.735 1502-1502/TEST: onPanelSlide: 0.030176027
06-21 11:39:40.751 1502-1502/TEST: onPanelSlide: 0.020117352
06-21 11:39:40.767 1502-1502/TEST: onPanelSlide: 0.012573345
06-21 11:39:40.783 1502-1502/TEST: onPanelSlide: 0.0075440067
06-21 11:39:40.800 1502-1502/TEST: onPanelSlide: 0.004191115
06-21 11:39:40.816 1502-1502/TEST: onPanelSlide: 0.002514669
06-21 11:39:40.832 1502-1502/TEST: onPanelSlide: 8.38223E-4
06-21 11:39:40.865 1502-1502/TEST: onPanelSlide: 0.0
06-21 11:39:40.883 1502-1502/TEST: onPanelStateChanged: prevoius state : DRAGGING new state: COLLAPSED
卡住时记录
onPanelStateChanged: prevoius state : ANCHORED new state: DRAGGING
06-21 11:48:54.909 7299-7299/TEST: onPanelSlide: 1.0
06-21 11:48:54.909 7299-7299/TEST: onPanelSlide: 0.30511317
06-21 11:48:54.928 7299-7299/TEST: onPanelStateChanged: prevoius state : DRAGGING new state: ANCHORED
最佳答案
我已经尝试过,并且 slidinguppanellayout 正在按照您希望的代码工作。但是,如果您仍然无法获得所需的结果,那么您可以添加一个 PanelSlideListener 并像我一样实现它的方法。
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private LinearLayout mListLayout;
private SlidingUpPanelLayout mSlidingLayout;
float slideoffset=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListLayout = (LinearLayout) findViewById(R.id.main_layout);
mSlidingLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);
mSlidingLayout.setAnchorPoint(0.4f);
mSlidingLayout.setDragView(mListLayout);
mSlidingLayout.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
slideoffset=slideOffset;
Log.d(TAG, "onPanelSlide: " + slideOffset);
}
@Override
public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
Log.d(TAG, "onPanelStateChanged: prevoius state : " + previousState + " new state: " + newState);
if(slideoffset<0.2&&(previousState== SlidingUpPanelLayout.PanelState.ANCHORED||previousState== SlidingUpPanelLayout.PanelState.EXPANDED))
{
mSlidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
}
}
});
}
}
首先,我从 onPanelSlide 方法获取 slidingOffset 并使用此 slidingOffset 值来确定 slidinguppanellayout 的当前位置,以便在 onPanelStateChanged 方法中我可以使用先前的状态和 slideOffset 值来了解设置的结束状态。
If you still persist problem after this then just post out the logcat.
关于android - 从 anchor 滑动到折叠状态时,Umano SlidingUpPanel 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37765192/
我需要能够在我的 javascript 中折叠/折叠各种代码片段,有点像 C# 中的#region #endregion。我找不到执行此操作的方法,有什么帮助吗? 最佳答案 窗口菜单 -> 选择首选项
折叠 Accordion 时,我注意到在这段时间内没有显示边框。例如,当 Accordion 展开时,我们会在展开时看到边界。这也可以在折叠 Accordion 时完成吗? Accordion 折叠时
是否有任何插件或快捷方式可以隐藏 Sublime Text 2 中除代码部分之外的所有内容? 我需要一次折叠除部分之外的所有部分,而不是一次折叠一个部分。 谢谢~ 最佳答案 如果将鼠标悬停在行号上,您
在 Web 应用程序中,我有一个操作可能会以各种不同的方式失败,或者最终会成功。 在这种情况下,成功和失败由 SimpleResult 的子类表示(表示 HTTP 响应) 我使用 scalaz/上的
我的数据在这样的分组方案中分为三个连续的类别: 因此,整个“OCM”组被分解为名为“N/A”、“Financials”、“Industrials”等的子组,每个子组又被分解为进一步的子组。 我在 Ex
我正在尝试猫图书馆,但我很难在我应该导入和创建的东西之间导航。我的问题如下: sealed trait Checks case class CheckViolation(id: Long, msg:
有没有办法查看当前文件中打开的折叠位置? 我个人在打开折叠和移动时遇到问题,我无法找到折叠开始的线!也许有一个选项可以在数字旁边设置一个漂亮的折叠提示。也许是这样的: + 1 void myfunc(
我正在寻找一种按空白深度折叠纯文本的方法。我更喜欢 Notepad++ 解决方案,但如果它只能在另一个编辑器中完成,我可以处理。例如 Header is arbitrary text Child i
今天早上我遇到了优秀的 jstree jQuery UI 插件。一句话——太棒了!它易于使用,易于样式化,并且可以按照包装盒上的说明进行操作。我还没有弄清楚的一件事是 - 在我的应用程序中,我想确
我有以下XAML,其中堆叠了三个组框。这些组框的标题中是复选框。 我想要实现的是:当我选中/取消选中一个框时,我希望相应的groupbox能够以平滑的动画缓慢展开/折叠。 我正在Blend 4中尝试此
我知道如何使用 zO 打开光标下的所有折叠. 但是反向怎么做呢? 我想要类似 za 的东西确实如此,但也具有递归性。 附注。我知道有 zC ,但它会关闭与当前行相关的所有父级折叠,我想关闭子级。 最佳
我试图防止点击 About Us 时导航栏崩溃部分或 Projects以下代码中的部分。我已经尝试过event.stopPropagation()在这两个按钮上,但是当 jQuery 代码执行时,导航
我有一个DataGrid。它具有DataGrid.RowDetailsTemplate。当单击一个按钮时,它应该展开/折叠;我该怎么做?
我有一个 Storyboard动画,使用Opacity属性可以使控件淡出 View 。完成后,我想将控件的“可见性”设置为“折叠”。 我也想做相反的事情...将“可见性”设置为“可见”,然后使用 St
我将 SublimeText3 用于 C++ 和 Java。我想知道是否有办法折叠文件/类中的所有方法,然后将它们全部展开,而不管插入符号在哪里。或者有没有办法列出所有的功能/方法。 基本上我希望能够
如何在 YAML 中断开长字符串(如长 url 或文件名/路径),而不会将换行符变成空格? 示例输入: url: > https://example.com/?what=Lorem %20ip
给定: import shapeless._ case class F(x: Option[Int], y: Option[Int]) 我想帮忙写一个函数,f: def f(Option[Int]::
我想测试数组是否仅包含唯一元素,我的解决方案如下: function uniqueElements(a) { var r = true; while (a) { var [el, a]
我试图在单击“项目”按钮时使“javascript 项目”和“CGI 项目”滑动切换。但是,我不太明白为什么点击时只有CGI项目按钮切换,而javascript项目按钮保持不变? 我正在尝试使用 Jq
我有一组需要在 UI 中显示的项目,例如标题和其下的项目列表。 有一个父组件,我将在其中将此数据传递到如下所示的文件. 在此基础上显示了父子布局。 现在我需要根据标题的点击展开/折叠。 有一个可以附加
我是一名优秀的程序员,十分优秀!