gpt4 book ai didi

android - 单击时更改的选项卡图标

转载 作者:行者123 更新时间:2023-11-30 04:29:49 24 4
gpt4 key购买 nike

[底部的解决方案]

我需要一个选项卡来实现以下行为,但我不确定如何实现它:

  • 标签需要位于底部。
  • 标签需要一个图标和文本。
  • 每个图标都需要不同。
  • 图标需要在被选中时改变颜色,标签需要覆盖。

我之所以问得如此含糊,是因为我尝试过实现一种方法但碰壁了,所以我想知道更有经验的人会如何去做。

请求的一些来源:CustomTabActivity.java

private TabHost mTabHost;
private Context ctx = this;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// construct the tabhost
setContentView(R.layout.main);

setupTabHost();
mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider);
setupTab(new TextView(this), "t1", R.drawable.myimg1);
setupTab(new TextView(this), "t2", R.drawable.myimg2);
mTabHost.setOnTabChangedListener(new OnTabChangeListener(){

@Override
public void onTabChanged(String tabId) {
Log.e("Simon", "Current tab - " + Integer.toString(mTabHost.getCurrentTab()));
View currentView = mTabHost.getChildAt(mTabHost.getCurrentTab());
currentView.getClass();
}

});
}

private void setupTabHost() {
mTabHost = (TabHost) findViewById(android.R.id.tabhost);
mTabHost.setup();
}

private void setupTab(final View view, final String tag, int num) {
View tabview = createTabView(mTabHost.getContext(), tag, num);

TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() {
public View createTabContent(String tag) {return view;}
});
mTabHost.addTab(setContent);
}

private static View createTabView(final Context context, final String text, final int num) {
View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
TextView tv = (TextView) view.findViewById(R.id.tabsText);
tv.setText(text);

ImageView iv = (ImageView) view.findViewById(R.id.tabsImg);

iv.setImageResource(num);
return view;
}

主.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1">
<ViewStub android:id="@+id/stub1"
android:inflatedId="@+id/subTree"
android:layout="@layout/mylayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:background="@drawable/tabs_bg" android:layout_height="wrap_content"/>
</LinearLayout>
</TabHost>

</LinearLayout>

我的布局.xml

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" style="?android:attr/progressBarStyleLarge" android:id="@+id/progressBar1"></ProgressBar>

</LinearLayout>

----------------解决方案------------

这样问题就解决了。我已将 R.drawable.myimg1 从 res/drawable-[hdpi|ldpi|mdpi] 文件夹中的静态图像替换为 res/drawable 中的新 xml 文件,如下所示:

mydrawable1.xml

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="@drawable/myimg1_selected"/>
<item android:drawable="@drawable/myimg1"/>
</selector>

其中 myimg1 和 myimg1_selected 是我想要以不同状态显示的图像。

最佳答案

检查 this tutorial .它描述了如何在选择选项卡时更改图标。

关于android - 单击时更改的选项卡图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7920122/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com