我的目标是增加ActionBar纵向模式的高度.我目前订
机器人:actionBarSize
在我的Themes.xml中.
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="DayTheme" parent="android:style/Theme.Holo.Light">
<item name="android:actionBarSize">@dimen/actionBarHeight</item>
<item name="android:actionBarTabTextStyle">@style/tab_indicator_text_dark</item>
</style>
<style name="NightTheme" parent="android:style/Theme.Holo">
<item name="android:actionBarSize">@dimen/actionBarHeight</item>
<item name="android:actionBarTabTextStyle">@style/tab_indicator_text_light</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
我在横向模式下获得了所需的效果,我将ActionBar高度增加到80dp.

然而,我将屏幕旋转为纵向模式,高度变化如此.

注意我在代码中进行以下调用.
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayShowTitleEnabled(false);
bar.setDisplayShowHomeEnabled(false);
Run Code Online (Sandbox Code Playgroud)
我正在开发一个带有android 4.2的Nexus 7.
如何在横向模式下以纵向模式获得相同的80dp高度?
我正在使用片段创建一个标签应用程序.
我已经成功创建了选项卡,但现在我需要在选择特定片段时创建一个对象.例如,当我选择时,SettingsTab我需要调用一个定义的函数Test class.同样毁灭
// SettingsTab
package com.example.sensorspositioningn;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class SettingsTab extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.settingstab, container, false);
}
}
Run Code Online (Sandbox Code Playgroud)
这是mainActivity中的代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
appContext = getApplicationContext();
//ActionBar
ActionBar actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab Tab1= actionbar.newTab().setText("Tab1");
ActionBar.Tab Tab2= actionbar.newTab().setText("Tab2");
ActionBar.Tab Tab3= actionbar.newTab().setText("Tab3");
ActionBar.Tab SettingsTab = actionbar.newTab().setText("Settings");
Fragment …Run Code Online (Sandbox Code Playgroud) 基本上,我想改变动作栏中标签的高度.在stackoverflow上已多次询问此问题,例如:
我已经尝试了大多数解决方案,但没有任何效果,这是我的代码.
<style name="CustomActionBarTheme" parent="@android:style/Theme.Holo">
<item name="android:scrollHorizontally">false</item>
<item name="android:paddingLeft">0dp</item>
<item name="android:paddingRight">0dp</item>
<item name="android:actionBarSize">80dp</item>
<item name="actionBarSize">80dp</item>
<item name="android:actionBarTabStyle">@style/ActionBarTabStyle</item>
</style>
<style name="ActionBarTabStyle" parent="@android:style/Widget.Holo.ActionBar.TabView">
<item name="android:height">80dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
显然,代码只会改变操作栏高度,而不是我想要的标签栏高度.这是图片供参考:

如您所见,底部的操作栏更高.但在操作栏模式下,标签高度保持不变.
为什么会这样?我错过了什么???先感谢您 :).
解决了,如:
和
https://code.google.com/p/android/issues/detail?id=41792
显然这是一个来自android sdk的bug ...从来没有遇到过像这样的bug :(.希望这有助于其他人.
android android-layout android-fragments android-tabs android-styles
我正在尝试在Android设计库中使用新的TabLayout创建仅带图标的应用栏.
像这样:

如何使用新的TabLayout Android设计库来完成它.
有一个简单的解决方案,或者我必须只使用setCustomView.我试图避免使用它.因为我没有得到像上图这样的图标的色调颜色.
我试着像这样写:
tabLayout.addTab(tabLayout.newTab().setIcon(R.drawable.ic_dashboard))
Run Code Online (Sandbox Code Playgroud)
但是当我选择标签时,图标仍然保持相同的颜色
我正在使用android支持设计tablayout.这是我的代码:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content""
app:tabGravity="center"
app:tabMode="scrollable"
/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
Run Code Online (Sandbox Code Playgroud)
我的问题是标签总是左对齐.但是,我想将选定的选项卡居中(即使在开头,第一个(选定的)选项卡也应居中).有没有办法做到这一点?谢谢.
center-align android-viewpager android-tabs android-tablayout
我正在构建选项卡的应用程序.
@android:style/Theme.Dialog 一切正常,直到我不应用主题@android:style/Theme.Dialog
后应用主题我得到例外:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ebuilder/com.ebuilder.views.MyTabActivity}: java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
在以下行:
actionBar.addTab(actionBar.newTab().setCustomView(R.layout.tab_home).
setTabListener(homeListener), 0);
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
1.如果我应用主题对话框会出现什么问题?
我的做法是对的吗?
如果有人知道另一种方法,请告诉我.
Edit1: *清单文件*
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.vivek"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:targetSdkVersion="14"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".FragmentInsideFragmentTestActivity"
android:label="@string/app_name"
android:theme="@style/Theme.CustomDialog" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
RES /值/ style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowNoTitle">false</item>
<item name="android:windowActionBar">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
EDIT2
05-03 …Run Code Online (Sandbox Code Playgroud) 经过几个小时的尝试,我终于找到了一种方法,可以将动作栏标签栏与动作栏分开.
如果没有空间,操作栏将标签转换为列出导航
但是现在还有一个问题.选项卡未填充标签栏.

编辑 选项卡通过以下方式添加到操作栏:ActionBar.Tab relatieTab = actionBar.newTab().setText("Relaties"); actionBar.addTab(relatieTab);
是否可以动态删除/恢复操作栏中的标签栏?
到目前为止,我通过更改操作栏的导航模式来完成此操作.我使用以下代码删除和恢复标签栏:
@Override
public void restoreTabs() {
getSupportActionBar()
.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
this.supportInvalidateOptionsMenu();
}
@Override
public void removeTabs() {
getSupportActionBar()
.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
this.supportInvalidateOptionsMenu();
}
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是有一个很大的问题:我每次调用setNavigationMode时onTabSelected都会调用,TabListener并且会重新创建当前的opend选项卡.
为了在片段之间轻松切换,我将HorizontalScrollView嵌入到我的Tab布局中,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none" >
<TabWidget android:id="@android:id/tabs"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TabWidget>
</HorizontalScrollView>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</TabHost>
Run Code Online (Sandbox Code Playgroud)
但是在我的代码中添加Fragments(如下所示)之后,在HorizontalScrollView的末尾会突然显示一些额外的空格:
滚动之前

滚动后

代码非常复杂,但我会尝试展示重要的部分.
{
mTabHost = (TabHost) childLayout.findViewById(android.R.id.tabhost);
mTabHost.setup();
FrameLayout tabsFL = (FrameLayout) childLayout.findViewById(android.R.id.tabcontent);
tabsFL.setId(TABS_FRAME_ID);
for (int i = 0; i < list.size(); i++) {
mTabHost.addTab(newTab(String.valueOf(i), list.get(i).getTitle(), tabsFL.getId()));
}
mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
updateTab(tabId, Integer.parseInt(tabId), list);
}
});
//manually load first fragment …Run Code Online (Sandbox Code Playgroud) 是否可以在v4 ViewPager上更改所选标签的颜色?
我需要使用v4 ViewPager,但我没有找到任何来源来定制它.
只是为了澄清我需要将蓝色改为另一种颜色:
