我有一个ViewPager实例化a View.当搜索结果返回到视图时,我想暂时禁用viewpager和子按钮的滚动.我打电话viewPager.setEnabled(false)但这不会禁用它.
有人有任何想法吗?
我想做的是:我正在尝试在程序运行时以编程方式启用/禁用分页器中的滑动
例如:在流程上,如果我检查一个条件,如果它返回true启用滑动,如果条件返回false禁用滑动.
public class CustomViewPager extends ViewPager {
private boolean enabled;
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
this.enabled = true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onTouchEvent(event);
}
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
if (this.enabled) {
return super.onInterceptTouchEvent(event);
}
return false;
}
public void setPagingEnabled(boolean enabled) {
this.enabled = enabled;
} }
Run Code Online (Sandbox Code Playgroud)
然后选择此项而不是XML中的内置viewpager
<mypackage.CustomViewPager
android:id="@+id/myViewPager"
android:layout_height="match_parent"
android:layout_width="match_parent" />
Run Code Online (Sandbox Code Playgroud)
您只需要使用"false"调用"setPagingEnabled"方法,用户将无法滑动到分页.
上述方法的问题:我无法在流上设置属性,I:e ....我可以启用滑动或禁用滑动.但我不能根据条件这样做 …
这个问题末尾的答案已经填写完整,结合了评论和解决方案.
我四处搜索,但没有发现任何真正解释为什么Android Lint以及一些Eclipse提示建议用一些layout_height和layout_width值替换0dp.
例如,我有一个ListView建议改变
之前
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1">
</ListView>
Run Code Online (Sandbox Code Playgroud)
后
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</ListView>
Run Code Online (Sandbox Code Playgroud)
同样,它建议更改ListView项.这些在变化之前和之后看起来都一样,但我有兴趣理解为什么这些是性能提升器.
任何人都有解释原因?如果它有帮助,这里是一般布局ListView.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView
android:id="@+id/logo_splash"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ImageView>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@color/background"
android:layout_below="@id/logo_splash">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
</ListView>
<TextView
android:id="@android:id/empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/no_upcoming" />
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
我在这里给出答案,因为它实际上是答案和下面引用的链接的组合.如果我对某事有误,请告诉我.
来自0dip layout_height或layouth_width的诀窍是什么?
有3种常规布局属性可用于宽度和高度
android:layout_heightandroid:layout_widthandroid:layout_weight …我正在改变幻灯片
viewPager.setCurrentItem(index++, true);
Run Code Online (Sandbox Code Playgroud)
但它变快了.有没有办法手动设置动画速度?
搜索过,发现有人问到同样的地方(除了StackOverflow,也许我有运气:)),没有答案.
喜欢:
https://groups.google.com/group/android-developers/browse_thread/thread/a13405c0b5833893?fwc=1
提前致谢.
我想在我的自定义中禁用转换的所有动画ViewPager.此视图分页器包含四个选项卡 - 每个选项卡加载一个Fragment- 以及视图分页器所做的是切换选项卡:例如,第一个选项卡是索引,第二个选项卡是地图等.
问题是,如果,作为第一个选项卡,我点击第四个选项卡,我可以看到如何ViewPager通过第二个和第三个选项卡,并在第四个选项卡上停止,我不希望这发生.
我试图禁用这一切的动画ViewPager试图用一个setAnimation到null每个用户选择要显示的新标签时间,但它仍然无法正常工作.
有什么想法实现这个,拜托?非常感谢提前!
编辑:我也尝试覆盖onCreateAnimation每个Fragment但仍然无法正常工作
我正在使用设计库提供的新类:TabLayout.我想在特定的情况下,我正在使用的那个不能再改变标签了.
我设法禁用其viewpager上的滑动,但我无法弄清楚如何通过单击选项卡禁用页面更改.
提前致谢.
我想实现一个TabLayout因为它很简单,但我发现的所有教程都涉及到ViewPager.我只是想要一个类似的OnClickListener地方,如果我点击Add图标,它将显示一个显示"选项卡1"的吐司,如果我点击一个日历图标,它将显示一个显示"标签2"的吐司
我想使用,TabLayout因为它处理设备旋转.
Main_activity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
// Add five tabs. Three have icons and two have text titles
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.add_live));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.calendar_live));
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.group_live));
tabLayout.addTab(tabLayout.newTab().setText("Send"));
tabLayout.addTab(tabLayout.newTab().setText("Send & Post"));
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:app="http://schemas.android.com/tools">
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="fixed"
app:tabGravity="fill" />
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud) 我设置了两个Fragments的滑动标签,每个标签Fragment都有Button一个WebView.这样做的问题是,当WebView Button单击滑动选项卡仍然激活时,当用户尝试在您内导航时,WebView最终会滑动到另一个选项卡.在点击方法中是否有一种方法可以禁用选项卡的滑动功能?任何帮助将非常感谢!
这里的代码:
public class MyWebViewClass extends Fragment {
private WebView mWebView;
private Button mButton;
public MyWebViewClass() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_webview, container, false);
mWebView = (WebView) view.findViewById(R.id.WebView);
mButton = (Button) view.findViewById(R.id.Button1);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mWebView.setVisibility(View.VISIBLE);
mButton.setVisibility(View.GONE);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("www.google.com"); …Run Code Online (Sandbox Code Playgroud) 我有RecyclerView一个LinearLayoutManager方位HORIZONTAL.其中的每个项目都可以包含交互元素(包括垂直元素ScrollView).是否有一种方法可以轻松RecyclerView忽略用户在RecyclerView不拦截触摸事件给孩子的情况下水平滚动或拖动的任何尝试?
我以编程方式控制其滚动效果,RecyclerView直到用户将其翻转为止.
我尝试了一些非常简单的想法,当我在响应某些事件时调用smoothScrollToPosition时,我启用滚动并禁用触摸事件,直到滚动结束.像这样:
private class NoScrollHorizontalLayoutManager extends LinearLayoutManager {
ScrollingTouchInterceptor interceptor = new ScrollingTouchInterceptor();
protected boolean canScroll;
public NoScrollHorizontalLayoutManager(Context ctx) {
super(ctx, LinearLayoutManager.HORIZONTAL, false);
}
public RecyclerView.OnItemTouchListener getInterceptor() {
return interceptor;
}
@Override
public void smoothScrollToPosition(RecyclerView recyclerView, RecyclerView.State state, int position) {
canScroll = true;
super.smoothScrollToPosition(recyclerView, state, position);
}
@Override
public void onScrollStateChanged(int state) {
super.onScrollStateChanged(state);
if(state == RecyclerView.SCROLL_STATE_IDLE) {
canScroll = false;
}
}
@Override …Run Code Online (Sandbox Code Playgroud)