Tôi có khả năng tương thích ViewPager với phần tử được nhúng PagerTitleStrip và hoạt động tốt nhưng nhấp vào PagerTitleStrip không chuyển sang chế độ xem tương ứng như mong đợi. Tôi đã xem qua các tài liệu nhưng tiện ích không có bất kỳ phương thức tích hợp nào để đính kèm onClickListeners vào đối tượng PagerTitleStrip. Điều này có vẻ hơi kỳ lạ vì đó có lẽ là điều mà hầu hết mọi người mong đợi.Xử lý PagerTitleStrip nhấp chuột trong compatibiliy ViewPager Fragment
Vì vậy, câu hỏi đặt ra là làm cách nào để làm cho dải tiêu đề có thể nhấp được?
Tôi cũng đang cố gắng tìm hiểu xem có cách nào để hiển thị đường gạch dưới dày trong dải tiêu đề đã chọn mà không thêm một TabHost nếu có thể.
Đây là mã:
chính bố trí view_pager.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.PagerTitleStrip
android:id="@+id/pager_title_strip"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="top"
android:background="#ccc"
android:textColor="#fff" />
</android.support.v4.view.ViewPager>
</LinearLayout>
Hai bố trí đoạn đó đi vào ViewPager:
fragment_connect.xml (thứ hai là giống hệt nhau do đó không đã bao gồm)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text_view_connect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="connect"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
Lớp hoạt động chính StandardViewPagerAct ivity.java:
package com.example.standardviewpager;
import java.util.List;
import java.util.Vector;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerTitleStrip;
import android.support.v4.view.ViewPager;
import android.view.Menu;
public class StandardViewPagerActivity extends FragmentActivity {
private MyPagerAdapter pagerAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view_pager);
ViewPager myPager = (ViewPager) findViewById(R.id.my_view_pager);
PagerTitleStrip pagerStrip = (PagerTitleStrip) findViewById(R.id.pager_title_strip);
// TODO: add underline for selected title strip
myPager.setAdapter(pagerAdapter);
myPager.setCurrentItem(0);
initialisePaging();
}
private void initialisePaging() {
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, ConnectFragment.class.getName()));
fragments.add(Fragment.instantiate(this, ProfilesFragment.class.getName()));
this.pagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);
ViewPager pager = (ViewPager) super.findViewById(R.id.my_view_pager);
pager.setAdapter(this.pagerAdapter);
}
}
Lớp adaptor MyPagerAdapter.java:
package com.example.standardviewpager;
import java.util.List;
import android.os.Parcelable;
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.view.LayoutInflater;
import android.view.View;
public class MyPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragments;
public MyPagerAdapter(FragmentManager supportFragmentManager, List<Fragment> fragments) {
super(supportFragmentManager);
this.fragments = fragments;
}
@Override
public int getCount() {
return this.fragments.size();
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public CharSequence getPageTitle(int position) {
return String.format("Title %d", position);
}
@Override
public Fragment getItem(int position) {
return this.fragments.get(position);
}
}
Và, cuối cùng, hai triển khai Fragment giống hệt nhau, bao gồm cả chỉ là người đầu tiên - ConnectFragment.java.
package com.example.standardviewpager;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
public class ConnectFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.fragment_connect, container, false);
TextView textView = (TextView) layout.findViewById(R.id.text_view_connect);
textView.setText("onCreateView() Connect");
return (View)layout;
}
}
'PagerTabStrip' là chính xác những gì tôi cần. Cảm ơn bạn! – ccpizza