Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否支持将view放在屏幕右侧呢? #4

Closed
wizos opened this issue Jan 16, 2019 · 10 comments
Closed

能否支持将view放在屏幕右侧呢? #4

wizos opened this issue Jan 16, 2019 · 10 comments

Comments

@wizos
Copy link

wizos commented Jan 16, 2019

想利用该库实现一个类似viewpager的左右滑的效果,不知道能否支持?

@wizos
Copy link
Author

wizos commented Jan 16, 2019

我按照 slideBackIconView 代码改写了一份可以放在右侧的view(rightSlideBackIconView),但是卡在 container.addView(rightSlideBackIconView); 这个view 无法紧贴右侧屏幕,一直在左侧。请问下能则呢么解决?

@ParfoisMeng
Copy link
Owner

@wizos
可以将view放在右侧,目前库里还没有相关实现。虽然没明白需求(ViewPager左右滑),有时间我看看怎么加上比较合适吧。
您的实现方式思路上应该没问题。至于问题,container是一个FrameLayout,addView是默认在左上角的(x=0,y=0)。如果要放在右边,需要加margin去定位(margin_left=screenWidth-viewWidth)。

PS:个人感性上不喜欢margin属性(开发人员选项-显示布局边界,margin属性是红色的,看着很刺眼),所以我不是很推荐使用margin。但目前也想不到更好的方案,如果您需要此功能,可以试一下。

@wizos
Copy link
Author

wizos commented Jan 17, 2019

请问怎么加 margin 呢?我使用以下代码,但是不生效。
`
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT);

lp.setMargins(screenWidth-viewWidth,0,0,0);

rightSlideBackView.setLayoutParams(lp);

container.addView(rightSlideBackView,lp);`

@ParfoisMeng
Copy link
Owner

ParfoisMeng commented Jan 17, 2019

参考此方法

/**
* 给SlideBackIconView设置topMargin,起到定位效果
*
* @param view SlideBackIconView
* @param position 触点位置
*/
private void setSlideBackPosition(SlideBackIconView view, int position) {
// 触点位置减去SlideBackIconView一半高度即为topMargin
int topMargin = (int) (position - (view.getBackViewHeight() / 2));
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(view.getLayoutParams());
layoutParams.topMargin = topMargin;
view.setLayoutParams(layoutParams);
}

@wizos
Copy link
Author

wizos commented Jan 17, 2019

还是不行……

`
container.addView(rightSlideBackView);

FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(rightSlideBackView.getLayoutParams());

layoutParams.leftMargin = (int)(screenWidth - maxSlideLength);

rightSlideBackView.setLayoutParams(layoutParams);`

image

@ParfoisMeng
Copy link
Owner

最近沉迷塞尔达难以自拔。。
不急的话,我周末抽时间看看吧。

@wizos
Copy link
Author

wizos commented Jan 17, 2019

哈哈,前段时间我也沉迷这个。先谢谢了。

@ParfoisMeng
Copy link
Owner

@senRsl
在我看来,普通app、不是浏览器app,完全不需要这个功能(我也没有发现这种app),我也想不到什么应用场景(网页上右滑前进,前进哪个URL?)。
如果你有什么不同见解,请在这里回复告诉我。

@ParfoisMeng
Copy link
Owner

@senRsl
对于你描述的场景我不是很认同。
但是右滑的功能看来倒是的确有需求,我看看什么时候有时间试一下加这个功能吧。

@ParfoisMeng
Copy link
Owner

@senRsl @wizos
已支持设置屏幕左右侧侧滑,请更新 1.0.5

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants