我正在尝试在我的应用中实现垂直滑动。 (就像用ViewPager滑动一样,但垂直方向)。
我找到了Jake Whartons图书馆Android-DirectionalViewPager。它是一个独立的.jar文件,除兼容性库外,还应包含该文件。 我在我的项目中包含了该文件。它现在位于“Referenced Libraries”下,就像兼容性库一样 但问题是,我甚至无法得到图书馆给出的例子。 调试器停在
行setContentView(R.layout.main);
'找不到来源'
LogCat抛出此错误: “05-23 14:43:13.583:E / dalvikvm(329):找不到类'com.directionalviewpager.DirectionalViewPager',从方法own.vvp.MainActivity.onCreate中引用 “
有人已经使用过此库吗?我需要一些帮助:))
这是我的代码:
清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="own.vvp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.directionalviewpager.DirectionalViewPager
android:id="@+id/pager"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dp"
android:orientation="horizontal">
<Button
android:id="@+id/horizontal"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginRight="1dp"
android:text="Horizontal" />
<Button
android:id="@+id/vertical"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_marginLeft="1dp"
android:text="Vertical" />
</LinearLayout>
</LinearLayout>
和主要活动:
package own.vvp;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.widget.Button;
import com.directionalviewpager.DirectionalViewPager;
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Set up the pager
final DirectionalViewPager pager = (DirectionalViewPager)findViewById(R.id.pager);
pager.setAdapter(new TestFragmentAdapter(getSupportFragmentManager()));
//Bind to control buttons
((Button)findViewById(R.id.horizontal)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pager.setOrientation(DirectionalViewPager.HORIZONTAL);
}
});
((Button)findViewById(R.id.vertical)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pager.setOrientation(DirectionalViewPager.VERTICAL);
}
});
}
}
它与示例中的代码相同,除了包名称和主要活动的名称,所以我想,我包含库的方式必定是错误的。
谢谢!
答案 0 :(得分:19)
更新(2月14日):这个库是一个非常好的选择。我目前正在我的项目中使用它,它的工作完美无瑕。它仍在维护中,它是对支持lib r19的标准ViewPager的非常接近的修改。另一个优点是,如果你使用gradle,你可以通过maven central轻松集成和解决它。
https://github.com/castorflex/VerticalViewPager
感谢Oleg Vaskevich,我能够从当前的git文件和oleg的添加/修复中编译一个新的和工作的directionalViewpager jar文件。 我可以确认它正在使用当前的support-lib v4 r11。
https://dl.dropbox.com/u/24363935/android-directionalviewpager-1.2.1fixed.jar
希望这对某些人有用:)
添加:我在DirectionalViewPager.setAdapter(PagerAdapter adapter){...};中有一个IllegalArgumentException。所以我修改并修复,重新编译并上传了新的jar。
答案 1 :(得分:14)
由于ViewPager发生重大变化,开发人员不推荐使用DVP。但是,这并不意味着它没有用处。
尝试直接下载源代码并在项目中包含两个源文件。如果您使用的是最新的支持/兼容性库,则需要使用android.database.DataSetObserver
代替ViewPager.DataSetObserver
。希望这有帮助!
应该有效的修改代码:https://dl.dropbox.com/u/21007282/Code/DirectionalViewPager-works.zip
答案 2 :(得分:0)
在整合存档的旧Jake Wharton项目时,我面临许多问题。我来到了这个github项目,它已与最新的应用程序compat / support版本正确集成。希望它可以帮助某人。 Vertical as well as horizontal view pager swipe