1

我使用 ADT 为 Android 4+ 版本创建了一个 Android 项目,并使用“固定选项卡 + 滑动”(使用向导)创建了一个主 Activity...但我不需要滑动操作,那么,我该如何禁用它我的应用程序?这是可能的?

非常感谢!

4

2 回答 2

5
  1. 将 ViewPager 替换为activity_main.xml其他内容(如 FrameLayout)并将其 id 更改为合理的内容,例如@+id/activity_root
  2. 从 MainActivity 中删除与 ViewPager 和 SectionsPagerAdapter 相关的所有内容。
  3. 使用 onTabSelected 回调来切换片段。

像这样的东西应该工作。您必须添加逻辑来创建和维护您的片段。

public class MainActivity extends Activity implements ActionBar.TabListener {

    private int mFragmentCount;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Set up the action bar.
        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        // For each of the sections in the app, add a tab to the action bar.
        mFragmentCount = 3;
        for (int i = 0; i < mFragmentCount; i++) {
            // Create a tab with text Also specify this Activity object, which
            // implements the TabListener interface, as the callback (listener)
            // for when this tab is selected.
            actionBar.addTab(actionBar.newTab().setText("Tab " + i).setTabListener(this));
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        // Switch fragments
        // use fragmentTransaction methods with R.id.activity_root for the container id
        // don't call commit(), it will be called for you
    }

    @Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {}

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {}
}

布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" />
于 2013-07-12T19:15:25.483 回答
3

我有同样的问题。这是禁用滑动的快速方法。

在 activity_main.xml 中,将 ViewPager 更改为以下内容:

<com.project.android.NoSwipeViewPager    
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" />

然后在您的项目中创建以下类:

package com.project.android;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;

public class NoSwipeViewPager extends ViewPager {

  private boolean enabled;

  public NoSwipeViewPager(Context context, AttributeSet attrs) {
      super(context, attrs);
      this.enabled = false;
  }

  @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;
  }
}

this.enabled = false; 在 NoSwipeViewPager 将禁用刷卡。

于 2014-02-21T01:22:51.017 回答