我正在尝试使用SherlockActionBar实现ViewPagerIndicator.它的工作原理:我可以滑动碎片,但风格不起作用!
它看起来像这样:
相关主题:https://github.com/JakeWharton/Android-ViewPagerIndicator/issues/66
我知道出了什么问题:在VPI的示例中,页面的样式在AndroidManifest.xml中设置(例如)
<activity
android:name=".SampleTabsDefault"
android:theme="@style/Theme.PageIndicatorDefaults">
</activity>
Run Code Online (Sandbox Code Playgroud)
但是当我将android:theme元素添加到我自己的Manifest.xml中时,我得到以下异常:
03-16 11:06:24.400: E/AndroidRuntime(483): Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.
Run Code Online (Sandbox Code Playgroud)
我还尝试将所有样式信息复制到styles.xml,但这也不起作用.
你能告诉我如何设置VPI的风格吗?谢谢!
编辑:现在我已经添加了
<activity
android:name=".SampleTabsDefault"
android:theme="@style/StyledIndicators">
</activity>
Run Code Online (Sandbox Code Playgroud)
到我的Manifest.xml
以及styles.xml中的以下样式
<style name="Theme.BataApp" parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>
<style name="StyledIndicators" parent="Theme.BataApp">
<item name="vpiTitlePageIndicatorStyle">@style/Widget.TitlePageIndicator</item>
<item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>
<item name="vpiTabTextStyle">@style/Widget.TabPageIndicator.Text</item>
</style>
Run Code Online (Sandbox Code Playgroud)
结果:我没有得到任何异常,看到样式,但我现在看不到任何碎片:(
活动代码可以在这里找到:http://pastebin.com/hsNgxFDZ 当前页面的风格截图:
目前我正在开发一个Android应用程序.我想制作一个背景如下所示的文本(标题):
_______
/______/
Run Code Online (Sandbox Code Playgroud)
我有以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="@color/jaarkleur"
android:centerColor="@color/jaarkleur"
android:endColor="#E66C2C00"
android:angle="0" />
<stroke android:width="1dp"
android:color="#ff000000"
/>
</shape>
</item>
<item>
<bitmap android:src="@drawable/overlay_left" android:gravity="left" />
</item>
<item>
<bitmap android:src="@drawable/overlay_right" android:gravity="right" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
所以我用图像做了一个透明的三角形放在两端.
这适用于只有一行的标题,但当标题占用两行时,它看起来像这样:

所以我的问题是:是否可以调整两个图像的大小,以便正确看起来?谢谢!
使用SherlockActionBar,我创建了一个很好的界面.在横向模式中,您会看到listfragment和"detailsfragment".
现在我想在详细信息框架中添加一个viewpageindicator(https://github.com/JakeWharton/Android-ViewPagerIndicator),所以我看起来像这样:
--------------------------|
|_1___|TAB1 | TAB2 | ETC |
|_2___|-------------------|
|_3___|Example: content |
|_4___| TAB1 of listitem 1|
|_5___|___________________|
Run Code Online (Sandbox Code Playgroud)
我希望这很清楚.基本上我会在片段内部使用FragmentManager/TabPageIndicator.
我有可能吗?我想不出来.. :(
谢谢!
我试图在ASyncTask中获取一些数据,一旦完成将数据传递给viewpager中的任何片段.但我得到以下异常:
java.lang.IllegalStateException:尚未绑定ViewPager.
我必须遵循以下代码:
OnCreateView
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
setContentView(R.layout.simple_tabs);
team_id = this.getIntent().getIntExtra("index", 0) + 1;
new getTeam().execute();
}
Run Code Online (Sandbox Code Playgroud)
的AsyncTask:
@Override
protected Void doInBackground(Void... arg0) {
team = api.getTeamByID(team_id);
return null;
}
@Override
protected void onPostExecute(Void result) {
mAdapter = new TeamFragmentAdapter(getSupportFragmentManager());
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
mIndicator = (TabPageIndicator)findViewById(R.id.indicator);
mIndicator.setViewPager(mPager);
progressDialog.dismiss();
}
Run Code Online (Sandbox Code Playgroud)
TeamFragmentAdapter:
class TeamFragmentAdapter extends FragmentPagerAdapter implements TitleProvider {
ArrayList<Fragment> fragments = new ArrayList<Fragment>();
ArrayList<String> titels = new ArrayList<String>();
public TeamFragmentAdapter(FragmentManager fm) {
super(fm);
fragments.add(new TeamInformatieFragment(team)); …Run Code Online (Sandbox Code Playgroud)