想实现这样的效果:
渣渣的我却弄成这样:(什么鬼啊)
MainACtivity
public class MainActivity extends AppCompatActivity implements View.OnClickListener,
View.OnTouchListener, TabHost.OnTabChangeListener {
@InjectView(android.R.id.tabhost)
MyFragmentTabHost mTabHost;
@InjectView(R.id.iv_quick_option)
ImageView ivQuickOption;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("MainActivity", "OnCreate");
ButterKnife.inject(this);
initView();
}
private void initView() {
mTabHost.setup(MainActivity.this, getSupportFragmentManager(), R.id.realtabcontent);
if (android.os.Build.VERSION.SDK_INT > 10) {
mTabHost.getTabWidget().setShowDividers(0);
}
initTabs();
// 中间按键图片触发
ivQuickOption.setOnClickListener(this);
mTabHost.setCurrentTab(0);
mTabHost.setOnTabChangedListener(this);
}
private void initTabs() {
MainTab[] tabs = MainTab.values();
final int size = tabs.length;
Log.d("MainActivity", "Tab的个数为" + size);
for (int i = 0; i < size; i++) {
MainTab mainTab = tabs[i];
TabSpec tab = mTabHost.newTabSpec(getString(mainTab.getResName()));
View indicator = LayoutInflater.from(getApplicationContext()).inflate(R.layout.tab_indicator, null);
TextView title = (TextView) indicator.findViewById(R.id.tab_title);
Drawable drawable = this.getResources().getDrawable(mainTab.getResIcon());
title.setCompoundDrawablesWithIntrinsicBounds(null, drawable, null, null);
if (i == 1) {
indicator.setVisibility(View.INVISIBLE);
mTabHost.setNoTabChangedTag(getString(mainTab.getResName()));
}
title.setText(getString(mainTab.getResName()));
tab.setIndicator(indicator);
tab.setContent(new TabContentFactory() {
@Override
public View createTabContent(String tag) {
return new View(MainActivity.this);
}
});
mTabHost.addTab(tab, mainTab.getCls(), null);
mTabHost.getTabWidget().getChildAt(i).setOnTouchListener(this);
}
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.iv_quick_option) {
Toast.makeText(MainActivity.this, "嘿嘿", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return false;
}
@Override
public void onTabChanged(String tabId) {
}
}
activity_main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.jack.musicandchat.activity.MainActivity">
android:id="@+id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/windows_bg">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="4dip">
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dip" />
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/div_white" />
android:id="@+id/iv_quick_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:contentDescription="@null"
android:src="@drawable/tab_icon_quick" />
MainTab.java
public enum MainTab {
MUSIC(0, R.string.main_tab_name_music, R.drawable.tab_icon_music, MusicFragment.class),
QUICK(1, R.string.main_tab_name_quick, R.drawable.tab_icon_quick, null),
CHAT(2, R.string.main_tab_name_chat, R.drawable.tab_icon_chat, ChatFragment.class);
private int idx;
private int resName;
private int resIcon;
private Class> cls;
private MainTab(int idx, int resName, int resIcon, Class> cls) {
this.idx = idx;
this.resName = resName;
this.resIcon = resIcon;
this.cls = cls;
}
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public int getResName() {
return resName;
}
public void setResName(int resName) {
this.resName = resName;
}
public int getResIcon() {
return resIcon;
}
public void setResIcon(int resIcon) {
this.resIcon = resIcon;
}
public Class> getCls() {
return cls;
}
public void setCls(Class> cls) {
this.cls = cls;
}
}