Android 布局:底部类似微信的按钮
Android layout: buttons at bottom similar to wechat
对于我的应用,我尝试将按钮放在所有活动的底部,类似于微信应用,如下图所示:
现在我想到的一种方法是在每个活动的底部简单地添加 <ImageButton>
s 但我不认为微信会这样做,因为你可以在活动之间滑动并且不会触发 onCreate
,活动始终存在,只需在特定按钮上滑动或触摸即可切换。
我做了研究,发现可以使用 split action bar
甚至 ViewFlipper
。操作栏拆分是不可能的,因为按钮将移回操作栏,例如在横向模式下,因为我希望按钮始终出现在底部,如微信。我看到的另一个选项是 Tabbed
界面,但我看到它可以出现在 actionbar 下方,不像微信那样甚至 actionbar 都是根据 activity.
更改的
问:有谁知道微信是用什么来实现这个功能的,所以我可以实现同样的功能吗?
一个想法是创建 BaseActivity,其中包括您喜欢的整个应用程序的总体设计。在其他活动中,扩展BaseActivity。您还可以在一些不需要显示按钮的活动中扩展 Activity class,例如 LoginActivity.
here is code main class
public class TabSample extends TabActivity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setTabs();
}
private void setTabs() {
addTab("Wechat", R.drawable.tab_home, ShowList.class);
addTab("Social", R.drawable.tab_search, UploadVideo.class);
addTab("Contact Us", R.drawable.tab_home, Contactus.class);
addTab("Setting", R.drawable.tab_search, DoNotDo.class);
}
private void addTab(String labelId, int drawableId, Class<?> c) {
TabHost tabHost = getTabHost();
Intent intent = new Intent(this, c);
TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);
View tabIndicator = LayoutInflater.from(this).inflate(
R.layout.tab_indicator, getTabWidget(), false);
TextView title = (TextView) tabIndicator.findViewById(R.id.title);
title.setText(labelId);
ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
icon.setImageResource(drawableId);
spec.setIndicator(tabIndicator);
spec.setContent(intent);
tabHost.addTab(spec);
}
}
here is xml
<?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="fill_parent"
android:background="#ffffff"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
对于我的应用,我尝试将按钮放在所有活动的底部,类似于微信应用,如下图所示:
现在我想到的一种方法是在每个活动的底部简单地添加 <ImageButton>
s 但我不认为微信会这样做,因为你可以在活动之间滑动并且不会触发 onCreate
,活动始终存在,只需在特定按钮上滑动或触摸即可切换。
我做了研究,发现可以使用 split action bar
甚至 ViewFlipper
。操作栏拆分是不可能的,因为按钮将移回操作栏,例如在横向模式下,因为我希望按钮始终出现在底部,如微信。我看到的另一个选项是 Tabbed
界面,但我看到它可以出现在 actionbar 下方,不像微信那样甚至 actionbar 都是根据 activity.
问:有谁知道微信是用什么来实现这个功能的,所以我可以实现同样的功能吗?
一个想法是创建 BaseActivity,其中包括您喜欢的整个应用程序的总体设计。在其他活动中,扩展BaseActivity。您还可以在一些不需要显示按钮的活动中扩展 Activity class,例如 LoginActivity.
here is code main class
public class TabSample extends TabActivity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setTabs();
}
private void setTabs() {
addTab("Wechat", R.drawable.tab_home, ShowList.class);
addTab("Social", R.drawable.tab_search, UploadVideo.class);
addTab("Contact Us", R.drawable.tab_home, Contactus.class);
addTab("Setting", R.drawable.tab_search, DoNotDo.class);
}
private void addTab(String labelId, int drawableId, Class<?> c) {
TabHost tabHost = getTabHost();
Intent intent = new Intent(this, c);
TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);
View tabIndicator = LayoutInflater.from(this).inflate(
R.layout.tab_indicator, getTabWidget(), false);
TextView title = (TextView) tabIndicator.findViewById(R.id.title);
title.setText(labelId);
ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
icon.setImageResource(drawableId);
spec.setIndicator(tabIndicator);
spec.setContent(intent);
tabHost.addTab(spec);
}
}
here is xml
<?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="fill_parent"
android:background="#ffffff"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_weight="0" />
</LinearLayout>
</TabHost>