嗨,我在我的应用程序中使用滑动选项卡布局,这一切都很好.我唯一不理解的是为什么我的标签文本是大写的.
我打印了选项卡在滑动选项卡类中的文本,它们不是大写的.我环顾四周,没有调用toUpperCase方法.
以下是设置文本的类中的代码:
private void populateTabStrip() {
final PagerAdapter adapter = mViewPager.getAdapter();
final View.OnClickListener tabClickListener = new TabClickListener();
for (int i = 0; i < adapter.getCount(); i++) {
View tabView = null;
TextView tabTitleView = null;
if (mTabViewLayoutId != 0) {
// If there is a custom tab view layout id set, try and inflate it
tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip,
false);
tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
}
if (tabView == null) {
tabView = createDefaultTabView(getContext());
}
if (tabTitleView == null && …Run Code Online (Sandbox Code Playgroud) 选项卡图标:我当前的方法是创建两个文件(ic_list_selected_24dp.xml和ic_list_unselected_24dp.xml;它们基本相同但只是android:fillColor='Color HEX CODE'不同),然后创建一个选择器(selector_tabitem_list.xml)来更改状态时的可绘制颜色改变了.
// @drawable/selector_tabitem_list.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:drawable="@drawable/ic_list_selected_24dp"
android:state_selected="true" />
<item android:drawable="@drawable/ic_list_unselected_24dp"
android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
它有点复制,因为两个drawable是相同的.
选择器不能用于矢量drawable.
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@drawable/selector"
android:pathData="M19,3...."
</vector>
Run Code Online (Sandbox Code Playgroud)
-
// @drawable/selector
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<color android:color="@color/itemSelected" />
</item>
<item android:state_selected="false">
<color android:color="@color/itemUnselected" />
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
,android:fillColor="@color/state"或者.
// @color/state
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/white" android:state_selected="true" />
<item android:color="@android:color/black" android:state_selected="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)
有没有办法使用一个drawable并动态更改其颜色?使用硬十六进制代码更好?
谢谢.
android android-tabs android-selector android-tablayout android-vectordrawable
我正在使用Sherlock ActionBar库,我有一个SherlockFragmentActivity实现ActionBar.TabListener(对于我的标签),我有3个标签...每个都是SherlockFragment.当我旋转时,整个Activity被重新创建,我丢失了片段中我的onCreate中声明的所有变量.我该如何解决这个问题?
我想我应该使用片段作为标签而不是活动......这是错的吗?
编辑:我应该提到我目前的解决方法是在Tab活动中使用静态列表并将片段推送到onPause上的那些列表(并在onResume上从它们返回内容).我真的不喜欢这样做,我知道必须有更好的方法.
另外,关于if(savedInstanceState == null),我已经尝试过,它似乎不起作用.我认为这是因为正在重新创建包含我的片段的Activity,并且需要重新创建选项卡.
我有一个应用程序,它使用ICS中操作栏上的选项卡,其中每个选项卡中都有一个片段.在某些情况下,在我按下操作栏上选项菜单上的按钮后,然后旋转设备,我得到一个NullPointerException.我可以使用相同的步骤可靠地重现它,但在某些情况下(如果我不按动作栏上的任何按钮)不会产生异常.该异常似乎没有引用我的代码中的任何行,并且在方向更改后重新创建活动期间发生.
这是例外:
09-18 20:56:22.357: E/AndroidRuntime(689): FATAL EXCEPTION: main
09-18 20:56:22.357: E/AndroidRuntime(689): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.andavapps.flightbot/com.andavapps.flightbot.FlightBotActivity}: java.lang.NullPointerException
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3351)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.access$700(ActivityThread.java:123)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.os.Handler.dispatchMessage(Handler.java:99)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.os.Looper.loop(Looper.java:137)
09-18 20:56:22.357: E/AndroidRuntime(689): at android.app.ActivityThread.main(ActivityThread.java:4424)
09-18 20:56:22.357: E/AndroidRuntime(689): at java.lang.reflect.Method.invokeNative(Native Method)
09-18 20:56:22.357: E/AndroidRuntime(689): at java.lang.reflect.Method.invoke(Method.java:511)
09-18 20:56:22.357: E/AndroidRuntime(689): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-18 20:56:22.357: E/AndroidRuntime(689): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-18 …Run Code Online (Sandbox Code Playgroud) android nullpointerexception android-optionsmenu android-actionbar android-tabs
我正在创建支持的应用程序Android 2.2 to Android 4.1.该TabHost是deprecated in Android version 3.2.但所有应用程序都支持创建的应用程序versions.但我想创建Tab bar一个看起来像tab bar in Android 4.1运行应用程序的应用程序Android 4.2,如果我在下面的android 3.2 version设备中运行应用程序,它必须看起来像tab bar在该设备中.我怎样才能做到这一点.?
这将是关于标签的最后一个问题,我保证:)(也许)所以从以前的问题和尝试和错误我有FragmentPagerAdapter调用PagerAdapter创建一些选项卡,并使我能够动态创建新选项卡.问题是新选项卡将始终插入到现有选项卡的右侧:
(图片: 
我尝试了以下方法:
添加一个静态条目"null",在创建初始选项卡集时会跳过该条目.然后在创建"Temp Tab"时,我可以将该条目覆盖到我想要的任何片段.给了我一些奇怪的IllegalSTateException ...
我认为这将是最好的,实际上真的很想工作:而不是添加片段:
private final List<Fragment> mFragments = new ArrayList<Fragment>();
public void addFragment(Fragment fragment) {
mFragments.add(fragment);
notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)使用
mFragments.add(0, fragment);
Run Code Online (Sandbox Code Playgroud)
但它给出了一条带有消息的IllegalStateException:
Can't change tag of fragment ChatFragment
Run Code Online (Sandbox Code Playgroud)
当我尝试添加临时片段时.现在,有两个问题:
有没有办法绕过该片段选项卡,我可以暂时取走所有片段标签并重建它们全部或其他东西吗?要么
有没有更好,更优雅的方式来做到这一点?或者我应该重新设计我的UI,以便可以使用右侧的选项卡?:P
编辑:这里有一些代码:(我从不想把死亡之墙发给人们,因为它可能吓跑他们:o)
FragmentPagerAdapter:
public class PagerAdapter extends FragmentPagerAdapter {
private Context mContext;
public PagerAdapter(FragmentManager fm, Context context) {
super(fm);
mContext = context;
}
private final List<Fragment> mFragments = new ArrayList<Fragment>();
public void addFragment(Fragment fragment) {
mFragments.add(fragment);
notifyDataSetChanged();
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position); …Run Code Online (Sandbox Code Playgroud) android illegalstateexception fragmentpageradapter android-tabs
我想为浏览器创建自定义tabhost,如标签.我很困惑如何将它应用于像Chrome浏览器选项卡中的布局,就像在图像中一样.

这是我尝试过的.我想知道如何用图像中的斜率创建边缘.
tab_selected.xml
<item>
<shape android:shape="rectangle" >
<solid android:color="#DCDCDC" />
<corners
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
</item>
<item
android:bottom="2dp"
android:left="1dp"
android:right="1dp"
android:top="1dp">
<shape android:shape="rectangle" >
<solid android:color="#DCDCDC" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
tab_unselected.xml
<item android:top="10dp">
<shape android:shape="rectangle" >
<solid android:color="#AAAAAA" />
</shape>
</item>
<item android:bottom="2dp">
<shape android:shape="rectangle" >
<solid android:color="#AAAAAA" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
Run Code Online (Sandbox Code Playgroud)
我希望可以使用XML中的Pathshape来完成.任何人都可以指出我的参考?无法在PathShape上找到引用
我的应用程序使用自己的风格,我使用Android Action Bar Style Generator(样式兼容性= AppCombat).Actionbar和选项卡的颜色是相同的,但问题是它们之间有阴影.我怎样才能删除这个阴影?
<style name="MyAppTheme" parent="android:Theme.Holo.Light">
<item name="android:windowContentOverlay">@null</item>
Run Code Online (Sandbox Code Playgroud)
"android:windowContentOverlay"正在删除选项卡下方的阴影而不是上方.

android android-actionbar android-tabs android-actionbar-compat
我使用的是ViewPager同PagerTabStrip在fragment A,一切工作正常.项目已填充.......直到我代替A用B,然后再替换B用A.
片段xml:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTabStrip
android:id="@+id/pager_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#222222"
android:textColor="@color/blue" />
</android.support.v4.view.ViewPager>
Run Code Online (Sandbox Code Playgroud)
Debuggin显示在getItem(int position)从未达到第二次替换后FragmentPagerAdapter.标签是空的.
标签适配器:
private class ChannelsFragmentPagerAdapter extends FragmentPagerAdapter {
final int PAGE_COUNT = dataChannelsList.size();
public ChannelsFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public CharSequence getPageTitle(int position) {
return dataChannelsList.get(position).getLang();
} …Run Code Online (Sandbox Code Playgroud) android android-adapter android-fragments android-viewpager android-tabs
在我的应用程序要创建动态 tabs的tabLayout,我想时,你得到的数据从服务器和该数据计数> 0然后创建tab.
对于TabLayout,我使用这个库:https://github.com/egemenmede/etiyabadgetab
对于这份工作,我写下面的代码:
FullSearchSendData sendData = new FullSearchSendData();
sendData.setKey(fullSearchText);
sendData.setLoadImages(true);
sendData.setSearchInCelebrities(true);
sendData.setSearchInMovies(true);
sendData.setSearchInSeries(true);
sendData.setSearchInEpisodes(true);
sendData.setSearchInUsers(true);
sendData.setPageIndex(1);
sendData.setPageSize(10);
sendData.setMaxDistance(1);
fullSearch_LoadLay.setVisibility(View.VISIBLE);
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<FullSearchResponse> call = api.getFullSearch(sendData);
call.enqueue(new Callback<FullSearchResponse>() {
@Override
public void onResponse(Call<FullSearchResponse> call, Response<FullSearchResponse> response) {
FullSearchResponse searchResponse = response.body();
if (searchResponse.getData().getCelebritiesCount() > 0) {
celebritiesCount = searchResponse.getData().getCelebritiesCount();
celebrityList.clear();
celebrityList.addAll(searchResponse.getData().getCelebrities());
}
if (searchResponse.getData().getMoviesCount() > 0) {
movieCount = searchResponse.getData().getMoviesCount();
movieList.clear();
movieList.addAll(searchResponse.getData().getMovies());
}
if …Run Code Online (Sandbox Code Playgroud)