我正在搞制表演.
我想在tabcontent(framelayout)下面显示我的tabwidget.
我通过将tabwiget选项卡属性设置为来完成它
android:gravity="bottom"
Run Code Online (Sandbox Code Playgroud)
但是framelayout无法与这些标签对齐.
也就是说,标签显示在屏幕的底部并与framelayout重叠
怎么做?如果设置一个高度值到framelayout它没有针对android的所有屏幕进行优化.我能做什么?任何的想法???
我正在尝试实现此应用程序.目前我已经设计了标签,因为我有超过7个标签,它看起来太拥挤了.如何设计它以便tabwidget可以水平滚动.我在市场上的一些应用程序上看到了这个设计,但没有任何线索如何在我的应用程序中实现这一点.
我看到的一个应用程序有一个水平滚动视图,它自己滚动,当你按下特定的图像/按钮时,它会显示一些内容.它似乎不是我猜的标签.
那么有人对此有所了解吗?
android horizontalscrollview tabwidget android-tabhost android-tabs
我有一个使用ViewPager + actionbar Sherlock标签的屏幕.我setOnPageChangeListener在寻呼机上有一个设置,它执行以下操作:
@Override
public void onPageSelected(final int position) {
actionBar.setSelectedNavigationItem(position);
}
Run Code Online (Sandbox Code Playgroud)
如果我只有很少的标签并显示所有标签,这在纵向模式下甚至在风景中都可以正常工作.但是,如果我在横向中添加更多选项卡,则会将这些选项卡折叠为单个下拉窗口小部件.当我浏览ViewPager时,该setSelectedNavigationItem方法被执行,但现在它对下拉选择没有影响:它保持在最后选择的值.这是非常糟糕的,因为用户缺少视觉线索:标签可能会说"一个",但用户已经在第6页.
有没有办法以编程方式更改根据位置显示哪个选项卡?
PS我知道为什么会发生这种情况:这是来自com.android.internal.app.ActionBarImpl的代码:
public void setSelectedNavigationItem(int position) {
switch (mActionView.getNavigationMode()) {
case NAVIGATION_MODE_TABS:
selectTab(mTabs.get(position));
break;
case NAVIGATION_MODE_LIST:
mActionView.setDropdownSelectedPosition(position);
break;
default:
throw new IllegalStateException(
"setSelectedNavigationIndex not valid for current navigation mode");
}
}
Run Code Online (Sandbox Code Playgroud)
当我单步执行时,我可以看到导航模式仍然是NAVIGATION_MODE_TABS,尽管标签显示为列表.现在 - 我的膝盖反射是将代码放入onConfigurationChanged以适当地设置导航模式,但这不应该自动发生吗?
PPS并且已经提交了包含补丁的Android错误
android landscape android-viewpager actionbarsherlock android-tabs
我同意任何想要制作标签应位于屏幕顶部的论点的人,但我无法控制我的应用程序的要求:).我必须在屏幕底部构建一个带标签的应用程序.我正在使用SDK 14和Actionbars.这甚至可能吗?我已经使用底部的选项卡构建了一个布局,但是当我将选项卡添加到ActionBar时,它们会自动呈现在屏幕顶部.
任何想法都会非常感激,谢谢大家花时间阅读这篇文章.
目前我正忙着为我的公司制作一个WHMCS应用程序.作为导航,我想在操作栏中使用Tab功能.

但是,如何编辑选项卡的宽度?我需要在一个屏幕上一起使用5而无需滚动.我已经尝试过这样的一些样式:
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="@android:attr/actionBarTabStyle">@style/tab_nav</item>
<item name="android:actionBarTabTextStyle">@style/actionBarTabTextStyle</item>
</style>
<style name="actionBarTabTextStyle" parent="android:Widget.Holo.Light.ActionBar.TabText.Inverse">
<item name="android:padding">1dp</item>
</style>
<style name="tab_nav" parent="android:style/Widget.Holo.Light.Tab">
<item name="android:paddingLeft">-25dp</item>
</style>
<style name="CustomTabTextStyle" parent="@android:style/TextAppearance.Holo">
<item name="android:textColor">#2456c2</item>
</style>
Run Code Online (Sandbox Code Playgroud)
但是,当使用较高的负值时,宽度不会是虾.
我正在构建一个MainActivity扩展的应用程序,FragmentActivity并有一个带有三个选项卡的ActionBar.在每个标签我想附加一个ParentFragment应该控制内部页面之间的滑动.结果应该是按下标签,用户应该从不同的实例ParentFragment和滑动中更改,他应该TextViewFragments在每个内部之间进行更改ParentFragment.
现在我可以在三个选项卡中切换完美,但问题是,ParentFragment没有正确显示,好像它甚至没有创建,因为我甚至不能看到onCreate(),onCreateView()而onViewCreated()在logcat的视图功能.
我认为问题在于自定义TabListener类及其功能,但我无法真正理解问题所在.我试图在很多网站上搜索,我已经查看了很多例子,但没有一个与相同的情况有关.
我错过了什么或我在这里做错了什么?
这是我的MainActivity:
import java.util.Random;
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.viewpagerindicator.PageIndicator;
public class MainActivity extends FragmentActivity {
MyAdapter mAdapter;
ViewPager mPager;
PageIndicator mIndicator;
private View mCustomView;
private static final Random …Run Code Online (Sandbox Code Playgroud) 嗨,我在我的应用程序中使用滑动选项卡布局,这一切都很好.我唯一不理解的是为什么我的标签文本是大写的.
我打印了选项卡在滑动选项卡类中的文本,它们不是大写的.我环顾四周,没有调用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) 我注意到TabLayout它只Fragments需要显示一次,所以当我替换Fragment包含TabLayout并切换回它时,它不会重新创建Fragments它保持,因此它们不再显示任何内容.是这样的设计还是我做错了什么?我Fragment在a中使用外部NavigationDrawer,当用户切换到另一个Fragment并返回时,该选项卡Fragments为空,因为它们不会被重新创建.我还注意到在切换回包含它们的片段后,Tabs的行为非常奇怪(它们在跳跃下面的白线,你可以在两个标签之间保持它而不触摸屏幕)
我正在使用的代码:
public class Fragment1 extends Fragment {
private static ViewPager viewPager;
private static TabLayout tabLayout;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Utils.changeLanguage(getActivity());
final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.LinesOverlay);
LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper);
View view = localInflater.inflate(R.layout.fragment1, container, false);
viewPager = (ViewPager) view.findViewById(R.id.viewpager);
tabLayout = (TabLayout) view.findViewById(R.id.tabs);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState); …Run Code Online (Sandbox Code Playgroud) android android-fragments android-tabs navigation-drawer androiddesignsupport
我想在TabLayout中找到Tab的视图,以便我可以将它传递给另一个函数.我不确定如何找到视图.
myTabLayout.getTabAt(0).getCustomView()返回null.
我如何获得视图?
TabLayout tabLayout = (TabLayout) rootView.findViewById(R.id.tab_layout_main);
tabLayout.addTab(tabLayout.newTab().setText("Page1"));
tabLayout.addTab(tabLayout.newTab().setText("Page2"));
viewPager = (ViewPager) rootView.findViewById(R.id.pager_main);
pagerAdapter = new MyPagerAdapter(getActivity(), getChildFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
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