标签: android-tabs

滑动选项卡布局文本是大写的

嗨,我在我的应用程序中使用滑动选项卡布局,这一切都很好.我唯一不理解的是为什么我的标签文本是大写的.

我打印了选项卡在滑动选项卡类中的文本,它们不是大写的.我环顾四周,没有调用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)

android android-tabs

7
推荐指数
2
解决办法
7930
查看次数

Android:如何在一个Vector Drawable xml中使用选择器更改android:fillcolor

选项卡图标:我当前的方法是创建两个文件(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

7
推荐指数
1
解决办法
3522
查看次数

Tab Activity中的片段在旋转时丢失所有数据?

我正在使用Sherlock ActionBar库,我有一个SherlockFragmentActivity实现ActionBar.TabListener(对于我的标签),我有3个标签...每个都是SherlockFragment.当我旋转时,整个Activity被重新创建,我丢失了片段中我的onCreate中声明的所有变量.我该如何解决这个问题?

我想我应该使用片段作为标签而不是活动......这是错的吗?

编辑:我应该提到我目前的解决方法是在Tab活动中使用静态列表并将片段推送到onPause上的那些列表(并在onResume上从它们返回内容).我真的不喜欢这样做,我知道必须有更好的方法.

另外,关于if(savedInstanceState == null),我已经尝试过,它似乎不起作用.我认为这是因为正在重新创建包含我的片段的Activity,并且需要重新创建选项卡.

android android-fragments actionbarsherlock android-tabs

6
推荐指数
1
解决办法
3433
查看次数

在dispatchCreateOptionsMenu期间旋转时出现NullPointerException,堆栈跟踪不包括我的应用程序中的任何函数

我有一个应用程序,它使用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

6
推荐指数
1
解决办法
2521
查看次数

Android TabHost已弃用

我正在创建支持的应用程序Android 2.2 to Android 4.1.该TabHostdeprecated in Android version 3.2.但所有应用程序都支持创建的应用程序versions.但我想创建Tab bar一个看起来像tab bar in Android 4.1运行应用程序的应用程序Android 4.2,如果我在下面的android 3.2 version设备中运行应用程序,它必须看起来像tab bar在该设备中.我怎样才能做到这一点.?

android android-tabs

6
推荐指数
2
解决办法
2万
查看次数

使用FragmentPagerAdapter向左侧添加选项卡

这将是关于标签的最后一个问题,我保证:)(也许)所以从以前的问题和尝试和错误我有FragmentPagerAdapter调用PagerAdapter创建一些选项卡,并使我能够动态创建新选项卡.问题是新选项卡将始终插入到现有选项卡的右侧:

(图片: http://s7.directupload.net/file/d/3198/73dyzvzv_png.htm

我尝试了以下方法:

  1. 添加一个静态条目"null",在创建初始选项卡集时会跳过该条目.然后在创建"Temp Tab"时,我可以将该条目覆盖到我想要的任何片段.给了我一些奇怪的IllegalSTateException ...

  2. 我认为这将是最好的,实际上真的很想工作:而不是添加片段:

    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)

当我尝试添加临时片段时.现在,有两个问题:

  1. 有没有办法绕过该片段选项卡,我可以暂时取走所有片段标签并重建它们全部或其他东西吗?要么

  2. 有没有更好,更优雅的方式来做到这一点?或者我应该重新设计我的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

6
推荐指数
1
解决办法
1778
查看次数

在Chrome浏览器中为Android创建自定义tabhost

我想为浏览器创建自定义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 android-browser android-tabhost android-tabs

6
推荐指数
1
解决办法
1774
查看次数

删除Actionbar和Tab之间的阴影

我的应用程序使用自己的风格,我使用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

6
推荐指数
1
解决办法
8969
查看次数

FragmentPagerAdapter没有处理片段的重新创建

我使用的是ViewPagerPagerTabStripfragment A,一切工作正常.项目已填充.......直到我代替AB,然后再替换BA.

片段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

6
推荐指数
1
解决办法
1453
查看次数

如何在Android上的TabLayout中以编程方式添加选项卡

在我的应用程序要创建动态 tabstabLayout,我想时,你得到的数据从服务器和该数据计数> 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)

android android-fragments android-viewpager android-tabs

6
推荐指数
1
解决办法
8758
查看次数