Articles of android tabhost

StateListDrawable用于切换colorfilters

我想创建在TabHost中使用的自定义按钮。 我一直试图使用相同的图像资源(png),但是根据状态改变colorfilter。 所以我把这个作为自定义按钮的布局: 在我的活动中,我添加了这样的标签: tabHost.addTab(tabHost.newTabSpec(TAB_NAME_NEWS).setIndicator(buildTab(R.drawable.tab_icon_news, R.string.news)) .setContent(newsIntent)); 这是’buildTab’方法: private final static int[] SELECTED = new int[] { android.R.attr.state_selected }; private final static int[] IDLE = new int[] { -android.R.attr.state_selected }; private View buildTab(int icon, int label) { LayoutInflater inflater = LayoutInflater.from(this); View view = inflater.inflate(R.layout.tab_button, null); StateListDrawable drawable = new StateListDrawable(); Drawable selected = getResources().getDrawable(icon); […]

使用硬件键盘时,Android TabHost选项卡会窃取焦点

我目前有一个包含4个标签的TabHost 。 在一些片段上,我们在布局中有许多EditText视图。 我们注意到,当您尝试使用硬件键盘输入任何EditText视图时,焦点将从EditText窃取并提供给EditText中当前活动的选项卡。 这仅发生在带有标签的屏幕上。 有没有一种快速简单的方法来解决这个问题?

TabHost一次显示内容(onCreate)

我有一个TabHost在一个navigationDrawer内部,我面临这个奇怪的问题,当我从TabHost出现作为导航抽屉项目存在另一个导航抽屉项目并返回到TabHost它将不会显示其内容,第一个时间它完美地工作,但是当我改变项目并回到它时,它将不会显示内容; 换句话说,它不会加载子片段,除非我关闭应用程序并重新启动它或更改方向(重新创建片段)。 它是如何看起来我第一次打开它(含内容) 转到另一个navDrawer项并返回TabHost后 TabHost片段: import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TabHost; import android.widget.TabWidget; import java.util.ArrayList; import info.fds.Emirates.R; public class MyFragment extends Fragment { private TabHost mTabHost; private ViewPager mViewPager; private TabsAdapter mTabsAdapter; public MyFragment() { } @Override public void onCreate(Bundle instance) […]

如何为相同的选项卡调用选项卡Onclick和OnTabChange

在我的项目中,我有两个选项卡和一个按钮。 对于两个选项卡,我有两个活动和按钮调用不同的活动。 事情是我在第一个标签上显示按钮的结果。 即tab0在tab0Event和按钮点击事件上也是活动的。 并且我能够使用tabHost.setOnTabChangedListener更改选项卡事件,但现在我还想要的是,假设我点击按钮所以现在按钮视图正在显示(tab0处于活动状态)但是再次如果我点击tab0,tab0活动应该是显示。 我尝试了许多点击标签的解决方案,一个是 getTabWidget().getChildAt(getTabHost().getCurrentTab()).setOnClickListener (new View.OnClickListener() { @Override public void onClick(View v) { System.out.println(getTabHost().getCurrentTab()); } }); 但是,当我使用tabChnageListner这个代码时,标签更改不起作用,我得到了非常意外的结果。 你能为我的问题建议解决方案。 谢谢。 用于更改选项卡的代码如下所示:(对于制表符更改工作正常,需要在其中添加Tab Onclick) public class TabLayoutUsingTabChangeEventActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); final TabHost tabHost = (TabHost)findViewById(android.R.id.tabhost); final TabHost.TabSpec sp1 = tabHost.newTabSpec(“TAB1”); TabHost.TabSpec sp2 = tabHost.newTabSpec(“TAB2”); //Creating First Tab […]

我可以在自定义标签视图中使用默认标签样式吗?

我的主要活动是TabActivity ,但我的标签不需要图标。 我知道我可以使用重载的TabHost.TabSpec.setIndicator(CharSequence label)方法省略该图标,如本问题所述 。 但是图标所在的空间仍然保留,因此浪费了大量空间。 在这个问题中已经提到了这一点 。 看来我不能只降低标签高度。 我将不得不使用TabHost.TabSpec.setIndicator(View view)重载提供我自己的View 。 很好,但我想确保其余的样式(背景/着色)在所有设备上始终保持“android”,就像我使用了默认的标签指示器一样。 所以我不想提供自己的颜色。 我发现@android:color/tab_indicator_text并将它用于TextView的文本颜色似乎按预期工作。 但我不知道从哪里获得默认的tab-background-colors。 我还发现了@android:style/Widget.TabWidget样式,但是将它应用于TextView和周围的LinearLayout似乎@android:style/Widget.TabWidget帮助。 这是我的标签指示器视图xml文件,取自一些教程: 如何获得“android默认”选项卡样式? 编辑:接下来,我尝试通过setIndicator(CharSequence)添加一个默认选项卡,获取其指标视图的getBackground drawable,清除所有选项卡,添加我的自定义视图(见上文),然后将我在setBackground检索到的drawable放入新的指标。 结果看起来很正确,有点不对劲。 首先,他们再次过高,所以我什么都没得到。 另一方面,所有选项卡的背景状态现在以某种方式链接(活动,突出显示,选择等)。 在drawable(s mutate()上使用mutate()根本没有帮助。 下一个技巧:我添加了三个默认选项卡,获取了所有背景,清除了它们,并为自己的三个选项卡分别提供了一个背景。 那么,这解决了第二个问题。 他们的国家不再联系在一起。 但它们仍然太高了。 所以我使用updateViewLayout减少了TabWidget的高度。 这样可以,但在选项卡指示器的顶部留下变色条。 实际上,我最终遇到的情况与使用TabHost.TabSpec.setIndicator(CharSequence label)方法时的情况相同。 无论如何,所有这些黑客让我觉得很脏。 是不是有一种优雅的方式来获得自定义视图上的默认android样式?

Android – Tabhost在Activity类中工作

好吧,我必须忽略一些愚蠢的东西,因为我无法让我的tabhost显示在我的Activity类中。 当我尝试运行应用程序时,我正在接近可怕的力量。 如果我扩展TabActivity,它会工作, 但我不能这样做 [见下面的编辑],因为一旦我从我的原型项目中移动代码,它将在一个inheritance自Activity的自定义类中。 这是XML布局: 以下是尝试创建和显示TabHost的类: import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.widget.TabHost; public class my_proto extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { Log.i(this.toString(), “OnCreate”); super.onCreate(savedInstanceState); setContentView(R.layout.main); Log.i(this.toString(), “get tab host”); TabHost host = (TabHost)findViewById(R.id.tabhost); host.setup(); Log.i(this.toString(), “add tabs”); host.addTab(host.newTabSpec(“one”) […]

Android删除tabwidget中选项卡之间的空格

我已经创建了一个应用程序,其中包含HelloTabActivity中的标签,这些标签之间也有空格,任何人都可以建议如何删除此空间,并且标签下方还有一条灰色线条如何删除? main.xml中 styles.xml @style/CustomTabWidget @style/CustomTabWidgetText 10sp bold #1589FF 3dip 活动 public class InfralineTabWidget extends TabActivity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Resources res = getResources(); // Resource object to get Drawables TabHost tabHost = (TabHost)getTabHost(); // The activity TabHost TabHost.TabSpec spec; // Resusable TabSpec for each tab Intent intent; // Reusable Intent for each […]

嵌入式标签与viewpager在Android中刷?

我已经实现了嵌套选项卡与视图寻呼机没有问题,但我的问题是在刷卡部分, 当我执行滑动操作时,主活动选项卡将被切换, 但我希望片段可以滑动。 我该怎么做到这一点? 我已经尝试使用tab主机和片段tabhost实现主选项卡,它根本没有滑动function,但是在主和片段上禁用了整个滑动。

android中的自定义标签

我很难理解如何在android中使用自定义选项卡。 我不想只是能够设置文本和东西。 如何更改大小,图像以及所有内容。 我用谷歌搜索,我找不到任何有意义的东西

返回时的Android刷新活动

我需要一些帮助来刷新我的应用程序中的一个活动。 我正在使用标签主机活动并连接到Web服务并从我的一个子活动中下载一些数据。 当我在我的子活动中按下同步按钮时,我正在开始一个不在标签主机中的新活动,当同步完成后,它将返回到它的父(子活动)。 我想要实现的是当我返回它时刷新活动。 当我通过互联网查看时,我发现最好的选择是使用startActivityForResult ,但我真的不明白如何使用它以及如何在从完成的活动中收到结果时刷新活动。 如果有人能帮助我,我会很高兴。谢谢! 编辑: 我正在使用此代码,它甚至没有显示登录onActivityResult MyCollectionId.class: Intent intent = new Intent(MyCollectionId.this, Synchronization.class); intent.putExtra(“process”, 2); startActivityForResult(intent, 1); @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode==RESULT_OK){ Log.e(“”,”OnActivityResult”); Intent refresh = new Intent(this, MyCollectionId.class); startActivity(refresh); this.finish(); } } Synchronization.class: Intent intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); setResult(RESULT_OK,intent); finish();