آموزش ساخت تب در اندروید
یکی از ویژگی های برنامه های حرفه ای در اندروید منویی در حالت تب است که می توان با آن ار صفحات بصورت خیلی بهینه استفاده کرد.


برای ساخت تب در اندروید استادیو از tabhost استفاده می شود.
که با کشیدن و رها کردن آن در صفحه layout ساخته می شود و ترکیب زیر را ذارد.
<TabHost
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabHost"
android:layout_gravity="center_horizontal"
android:layout_weight="0.03">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"></TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/formul"
android:background="@color/menu4"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/aboutapp"
android:background="@color/menu4"
/>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/best"
android:background="@color/menu4"
/>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
توجه داشته باشید شما با linearlayout کار دارید و اجزای صفحات را درون آن می گزارید.
و حالا به سراغ کد آن می رویم که بسیار راحت است.
import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;
/**
* Created by piero on 10/27/16.
*/
public class formul1 extends Activity {
TabHost
tabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.formule1);
//معرفی تب هاست
tabHost = (TabHost) findViewById(R.id.tabHost);
tabHost.setup();
//افزودن تب ۱
TabHost.TabSpec spec1=tabHost.newTabSpec("TAB 1");
spec1.setContent(R.id.linearLayout);
spec1.setIndicator("Appinapps");
//افزودن تب ۲
TabHost.TabSpec spec2=tabHost.newTabSpec("TAB 2");
spec2.setContent(R.id.linearLayout2);
spec2.setIndicator("google");
//افزودن تب ۳
TabHost.TabSpec spec3=tabHost.newTabSpec("TAB 3");
spec3.setContent(R.id.linearLayout3);
spec3.setIndicator("piero");
// افزودن تب ها
tabHost.addTab(spec1);
tabHost.addTab(spec2);
tabHost.addTab(spec3);
}
}
واکنون برنامه شما آمادست.
اسکرول شدن محتوا در تب هاست
به منظور اسکرول شدن کافی است از Scrollview در Linearlayout استفاده نمایید به تزتیب زیر.
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/formul"
android:background="@color/menu4"
/>
</ScrollView>
</LinearLayout>
در واقع کد شما می شود :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/listbackground"
android:weightSum="1"
android:layoutDirection="rtl"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@color/menu6"
>
<TextView
android:textStyle="bold"
android:id="@+id/emkanattitle"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/formulmenu1"
android:gravity="center"
android:textColor="@color/menutext1"
android:textSize="25dp"
android:drawableLeft="@drawable/icon7"
android:paddingLeft="10dp"
/>
</RelativeLayout>
<TabHost
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/tabHost"
android:layout_gravity="center_horizontal"
android:layout_weight="0.03">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"></TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/formul"
android:background="@color/menu4"
/>
</ScrollView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/formul"
android:background="@color/menu4"
/>
</ScrollView>
</LinearLayout>
<LinearLayout
android:id="@+id/linearLayout3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/formul"
android:background="@color/menu4"
/>
</ScrollView>
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
</LinearLayout>
حساس شدن به تاچ در آموزش ساخت تب در اندروید
با این کار ساده جلوه بسیار زیادی به برنامه تان می دهید . کاربر شما با عملیات swip می تواند بین تبها انتقال پیدا کند به طور عامیانه با دست کشیدن رو صفحه تبها عوض می شود.
برای این منظور فقط کافی است کد زیر را اضافه کنید.
// تغییر در هنگامی که تاچی اتفاق میفتد
@Override
public boolean onTouchEvent(MotionEvent touchevent) {
switch (touchevent.getAction()) {
// when user first touches the screen to swap
case MotionEvent.ACTION_DOWN: {
lastX = touchevent.getX();
// دریافت آخرین جایگاه تاچ
break;
}
case MotionEvent.ACTION_UP: {
float currentX = touchevent.getX();
// if left to right swipe on screen
if (lastX < currentX) {
switchTabs(false);
}
// if right to left swipe on screen
if (lastX > currentX) {
switchTabs(true);
}
break;
}
}
return false;
}
//تابع انتقال بین تبها
public void switchTabs(boolean direction) {
if (direction) // true = move left
{
if (tabHost.getCurrentTab() == 0)
tabHost.setCurrentTab(tabHost.getTabWidget().getTabCount() - 1);
else
tabHost.setCurrentTab(tabHost.getCurrentTab() - 1);
} else
// move right
{
if (tabHost.getCurrentTab() != (tabHost.getTabWidget()
.getTabCount() - 1))
tabHost.setCurrentTab(tabHost.getCurrentTab() + 1);
else
tabHost.setCurrentTab(0);
}
}
و در نهایت :
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.TabHost;
/**
* Created by piero on 10/27/16.
*/
public class formul1 extends Activity {
TabHost tabHost;
float lastX;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.formule1);
//معرفی تب هاست
tabHost = (TabHost) findViewById(R.id.tabHost);
tabHost.setup();
//افزودن تب ۱
TabHost.TabSpec spec1=tabHost.newTabSpec("TAB 1");
spec1.setContent(R.id.linearLayout);
spec1.setIndicator("Appinapps");
//افزودن تب ۲
TabHost.TabSpec spec2=tabHost.newTabSpec("TAB 2");
spec2.setContent(R.id.linearLayout2);
spec2.setIndicator("google");
//افزودن تب ۳
TabHost.TabSpec spec3=tabHost.newTabSpec("TAB 3");
spec3.setContent(R.id.linearLayout3);
spec3.setIndicator("piero");
// افزودن تب ها
tabHost.addTab(spec1);
tabHost.addTab(spec2);
tabHost.addTab(spec3);
}
// تغییر در هنگامی که تاچی اتفاق میفتد
@Override
public boolean onTouchEvent(MotionEvent touchevent) {
switch (touchevent.getAction()) {
// when user first touches the screen to swap
case MotionEvent.ACTION_DOWN: {
lastX = touchevent.getX();
// دریافت آخرین جایگاه تاچ
break;
}
case MotionEvent.ACTION_UP: {
float currentX = touchevent.getX();
// if left to right swipe on screen
if (lastX < currentX) {
switchTabs(false);
}
// if right to left swipe on screen
if (lastX > currentX) {
switchTabs(true);
}
break;
}
}
return false;
}
//تابع انتقال بین تبها
public void switchTabs(boolean direction) {
if (direction) // true = move left
{
if (tabHost.getCurrentTab() == 0)
tabHost.setCurrentTab(tabHost.getTabWidget().getTabCount() - 1);
else
tabHost.setCurrentTab(tabHost.getCurrentTab() - 1);
} else
// move right
{
if (tabHost.getCurrentTab() != (tabHost.getTabWidget()
.getTabCount() - 1))
tabHost.setCurrentTab(tabHost.getCurrentTab() + 1);
else
tabHost.setCurrentTab(0);
}
}
}
آموزش ساخت تب در اندروید