بسم الله الرحمن الرحیم.
توی پست های قبلی هم آموزش منوی کشویی رو دادیم و هم طریقه راست چین کردن تولبار و نویگیشن بار. اما یه مشکلی که اکثرا بهش بر میخوریم راست چین کردن ویو پیجر هست چون خودش اتوماتیک راست چین نمیشه باید یه سری کارا رو کرد و به صورت دستی اون رو راست چین کرد.
منظور از راست چین کردن ویو پیجر اینه که وقتی شما توی rtlSupport رو با true قرار میدید (آموزش راست چین کردن برنامه) و بعد ویو پیجر استفاده میکنید وقتی دارید سوایپ میکنید به سمت راست ویو پیجر به سمت چپ میره
اما مشکلی نیست من چیزی که تونستم باهاش مشکلمو حل کنم اینه که شما از یه لایبرای استفاده کنید.
اگه از اندروید استودیو استفاده میکنید کار های زیر رو انجام بدید.
1) وارد فایل build.gradle بشید و jCenter() رو اینجوری تغییر بدید.
repositories {
maven { url "https://jitpack.io" }
}
بعد وارد اون یکی build.gradle بشید (اگه خیلی وقته دارید با اندروید استودیو کار میکنید حتما میدونید دو و بیشتر از دو build.gradle داره این دومی Module:app هست)
حالا به dependencies خط زیر رو اضافه کنید.
compile 'com.github.duolingo:rtl-viewpager:v1.0.0'
دقت کنید اگه روی offline work گذاشتید باید اون رو غیر فعال کنید تا لایبراری دانلود شه و بعد از دانلود دوباره گرادل رو روی offline work بزارید (برای افزایش سرعت این کار رو انجام میدیم. آموزش فعال کردن حالت آفلاین رو ببینید)
خب اگه سوال یا مشکلی بود در خدمتم.
یا علی مدد
mahboub میگه:
سلام خسته نباشید من این کتابخانه رو به پروژه اضافه کردم ممنون میشم بیشتر راهنمایی کنید حداقل با یک مثال من تو اینجا هم خوندم ولی سر در نیاوردم اگه امکانش هست ممنون میشم یه مثال بزنید مثلا تو این اکتیویتی جطوری ازش استفاده کنم
و این کد جاوا
package ir.myapplication;
import android.support.design.widget.TabLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
/**
* The {@link android.support.v4.view.PagerAdapter} that will provide
* fragments for each of the sections. We use a
* {@link FragmentPagerAdapter} derivative, which will keep every
* loaded fragment in memory. If this becomes too memory intensive, it
* may be best to switch to a
* {@link android.support.v4.app.FragmentStatePagerAdapter}.
*/
private SectionsPagerAdapter mSectionsPagerAdapter;
/**
* The {@link ViewPager} that will host the section contents.
*/
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
public PlaceholderFragment() {
}
/**
* Returns a new instance of this fragment for the given section
* number.
*/
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
textView.setText(getString(R.string.section_format, getArguments().getInt(ARG_SECTION_NUMBER)));
return rootView;
}
}
/**
* A {@link FragmentPagerAdapter} that returns a fragment corresponding to
* one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "SECTION 1";
case 1:
return "SECTION 2";
case 2:
return "SECTION 3";
}
return null;
}
}
}
درصورت امکان برام ایمیل نمایید واقعا به این خیلی نیاز دارم میخام چه انگلیسی و چه فارسی میکنن همون طرف راست کشیده بشه
mahboubhosseinzadeh@gmail.com
آیدی تلگرام:@khoydesign
محمد فلاح به این سوال پاسخ داده که:
سلام دوست عزیز
من خیلی وقته دیگه از این لایبراری استفاده نکردم ولی تا جایی که یادمه باید توی فایل xml تون به جای Viewpager این اسم رو بنویسید
com.duolingo.open.rtlviewpager.RtlViewPager موفق باشید
omidnj میگه:
سلام من یک پروژه دارم که میخوام حتی وقتی زبان گوشی انگلیسی هست راستچین باشه با استفاده از android:layoutDirection="rtl" توی تگ بالایی صفحات تونستم همه قسمتهای اپ رو راستچین کنم اما یکی از صفحات که صفحه توضیحات هست با این روش راستچین نمیشه! جالب اینجاست که توی خود اندروید استودیو نشون میده که راستچین شده اما وقتی روی گوشی نصب می کنم راستچین نیست. مشکل از کجا می تونه باشه
محمد فلاح به این سوال پاسخ داده که:
سلام دوست عزیز.
چرا کار خودتون رو سخت کردید.
کافی بود توی مانیفست توی قسمت application کد android:supportsRtl="true" رو بزارید تا تمامی صفحات راست چین بشه البته فقط برای api 17 به بالاست.
البته بنده تست نکردم که اگه زبان انگلیسی بشه باز این کد کارش رو میکنه یا خیر اما به نظرم درست باشه و در هر زبان برنامه رو راست چین نگه دارید.
صفحه توضیحتون مگه چجوری هست؟ یعنی xml نداره اگه فایل جاوا داره و xml توی فایل layout نداره میتونید کد زیر رو توی فایل جاوای اون اکتیویتی بریزید
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
اگه بیشتر در مورد اون صفحه توضیحات بگید بهتر میتونم راهنماییتون کنم.