我的项目是为了一个测验,我把这些问题作为片段。我添加了一个自定义工具栏,其中包含导航按钮和问题#indicator(点)。我遇到了两个问题:
1.工具栏通过手势或按下/中的下一个按钮滑动问题/。我想,工具栏是用新片段创建的。我希望此工具栏是静态的 - 滑动/单击下一步应仅更改内容,工具栏不应移动。
我通过更改
解决了#1问题pager.setCurrentItem(pager.getCurrentItem() - 1, true );
到
pager.setCurrentItem(pager.getCurrentItem() - 1, false );
2.我想隐藏/显示某个片段上工具栏上的上一个/下一个按钮 - 第一个片段不应该有前一个按钮,最后一个片段不应该有下一个按钮。我试图改变FragmentActivity类(我已经改为AppCompatActivity)的可见性,但它给出了错误 - "试图在空对象引用上调用setVisibility"
我已在所有片段xml文件中使用<include layout="@layout/toolbar_layout"/>
来包含工具栏。
工具栏xml
`<android.support.v7.widget.Toolbar android:id="@+id/toolbar2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorAccent"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:contentDescription="previous"
android:id="@+id/previousQ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:onClick="previousQ"
android:visibility="invisible"
android:background="@android:color/transparent"
android:src="@drawable/ic_arrow_back_white" />
<TextView
android:id="@+id/countQ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="22sp"
android:text="●○○○○"/>
<ImageButton
android:contentDescription="next"
android:id="@+id/nextQ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:onClick="nextQ"
android:background="@android:color/transparent"
android:layout_alignParentRight="true"
android:src="@drawable/ic_arrow_forward_white" />
</RelativeLayout>
`
FragmentActivity类
public class QuizActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_pager);
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar2);
setSupportActionBar(toolbar);
}
public void nextQ(View view) {
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setCurrentItem(pager.getCurrentItem() + 1,true);
}
public void previousQ(View view) {
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setCurrentItem(pager.getCurrentItem() - 1,true);
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int pos) {
switch(pos) {
case 0: return FirstFragment.newInstance("FirstFragment, Instance 1");
case 1: return SecondFragment.newInstance("SecondFragment, Instance 1");
case 2: return FirstFragment.newInstance("ThirdFragment, Instance 1");
case 3: return FirstFragment.newInstance("ThirdFragment, Instance 1");
case 4: return FirstFragment.newInstance("ThirdFragment, Instance 1");
default: return FirstFragment.newInstance("ThirdFragment, Default");
}
}
@Override
public int getCount() {
return 5;
}
}'
答案 0 :(得分:0)
您是如何尝试更改按钮可见性的?您可以尝试将id添加到相对布局中,然后以这种方式更改可见性:
toolbar2.findViewById(R.id.relativeLayoutId).findViewById(R.id.nextQ)
让我知道它是否有效。