آموزش ساخت دیالوگ سفارشی در برنامه نویسی اندروید

سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ساخت دیالوگ سفارشی در برنامه نویسی اندروید می پردازیم این بار در دیالوگ ها از tab استفاده خواهیم کرد در ادامه می توانید پیش نمایشی از آن را مشاهده کنید با ما همراه باشید.
به علت بالا بودن حجم پیش نمایش آن در لینک زیر مشاهده کنید.
لینک نمایش
مثل همیشه برای استفاده از این کتاب خانه عمل می کنیم.
ابتدا وارد فایل Build.gradle از نوع Top Level شده سپس در بخش repositories خط زیر را اضافه کنید چون درمخزن jitpack قرار دارد این کار را انجام می دهیم.

        maven { url "https://jitpack.io" }

سپس وارد فایل Build.gradle از نوع Module شده و در بخش dependencies خط زیر را اضافه کنید.

          compile 'com.github.ashishbhandari:AndroidTabbedDialog:v1.1'

حالا پروژه را sync کنید علت خطاهای احتمالی گریدل را قبلی بررسی کرده ایم.
ابتدا یک فایل به نام tab_one_layout.xml در layout خود ایجاد کرده و کد های زیر را در آن قرار دهید.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scrollView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:gravity="center">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:text="Small Text"
            android:id="@+id/text_view" />
    </LinearLayout>
</ScrollView>

این بخش همان بخش Tab ما می شود .
سپس کد مربوط به activity_main.xml همانند زیر می شود فقط یک دکمه در اکتیویتی اصلی قرار می دهیم.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.androidifygeeks.tabdialogs.MainActivity">
    <Button
        android:id="@+id/testbutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Dialog with tabs" />
</RelativeLayout>

و در آخر هم کد مربوط به MainActivity.java هم همانند زیر می شود.

package ir.programchi;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.androidifygeeks.library.fragment.PageFragment;
import com.androidifygeeks.library.fragment.TabDialogFragment;
import com.androidifygeeks.library.iface.IFragmentListener;
import com.androidifygeeks.library.iface.ISimpleDialogCancelListener;
import com.androidifygeeks.library.iface.ISimpleDialogListener;
import java.util.HashSet;
import java.util.Set;
public class MainActivity extends AppCompatActivity implements ISimpleDialogListener, ISimpleDialogCancelListener, IFragmentListener {
    private static final int REQUEST_TABBED_DIALOG = 42;
    private static final String TAG = MainActivity.class.getSimpleName();
    private final Set<Fragment> mMyScheduleFragments = new HashSet<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.testbutton).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                TabDialogFragment.createBuilder(MainActivity.this, getSupportFragmentManager())
                        .setTitle("Title")
                        .setSubTitle("Subtitle")
                        .setTabButtonText(new CharSequence[]{"Tab1", "Tab2"})
                        .setPositiveButtonText("Ok")
                        .setNegativeButtonText("Cancel")
                        .setNeutralButtonText("Neutral")
                        .setRequestCode(REQUEST_TABBED_DIALOG)
                        .show();
            }
        });
    }
    @Override
    public void onCancelled(int requestCode) {
        switch (requestCode) {
            case REQUEST_TABBED_DIALOG:
                Toast.makeText(MainActivity.this, "Dialog cancelled", Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
    }
    @Override
    public void onNegativeButtonClicked(int requestCode) {
        if (requestCode == REQUEST_TABBED_DIALOG) {
            Toast.makeText(MainActivity.this, "Negative button clicked", Toast.LENGTH_SHORT).show();
        }
    }
    @Override
    public void onNeutralButtonClicked(int requestCode) {
        if (requestCode == REQUEST_TABBED_DIALOG) {
            Toast.makeText(MainActivity.this, "Neutral button clicked", Toast.LENGTH_SHORT).show();
        }
    }
    @Override
    public void onPositiveButtonClicked(int requestCode) {
        if (requestCode == REQUEST_TABBED_DIALOG) {
            Toast.makeText(MainActivity.this, "Positive button clicked", Toast.LENGTH_SHORT).show();
        }
    }
    @Override
    public void onFragmentViewCreated(Fragment fragment) {
        int selectedTabPosition = fragment.getArguments().getInt(PageFragment.ARG_DAY_INDEX, 0);
        View rootContainer = fragment.getView().findViewById(R.id.root_container);
        Log.i(TAG, "Position: " + selectedTabPosition);
        switch (selectedTabPosition) {
            case 0:
                selectedTabPositionZeroCase(rootContainer);
                break;
            case 1:
                selectedTabPositionOneCase(rootContainer);
                break;
            default:
                break;
        }
    }
    private void selectedTabPositionZeroCase(View rootContainer) {
        // add view in container for first tab
        View tabProductDetailLayout = getLayoutInflater().inflate(R.layout.tab_one_layout, (ViewGroup) rootContainer);
        TextView textView = (TextView) tabProductDetailLayout.findViewById(R.id.text_view);
        textView.setText("hello: tab1");
    }
    private void selectedTabPositionOneCase(View rootContainer) {
        // add view in container for second tab
        View tabProductDetailLayout2 = getLayoutInflater().inflate(R.layout.tab_one_layout, (ViewGroup) rootContainer);
        TextView textView1 = (TextView) tabProductDetailLayout2.findViewById(R.id.text_view);
        textView1.setText("hello: tab2");
    }
    @Override
    public void onFragmentAttached(Fragment fragment) {
        mMyScheduleFragments.add(fragment);
    }
    @Override
    public void onFragmentDetached(Fragment fragment) {
        mMyScheduleFragments.remove(fragment);
    }
}

 
این آموزش هم به پایان رسید.
 
موفق و موید باشید.

مطالعه بیشتر