4

실제로 내 앱에 문제가 있습니다. 내 ViewPager 및 ViewPagerIndicator (http://viewpagerindicator.com/)이 표시되지 않고 그 이유를 알 수 없습니다. 모든 것을 여러 번 확인했는데 (어댑터를 올바르게 설정하고, instantiateItem의 뷰를 추가하고, getCount()에서 좋은 크기를 반환하는 등), XML에서 레이아웃 매개 변수를 변경하고, MyPagerAdapter 클래스를 다시 작성한 다음 몇 가지 작업을 시도했습니다. 심지어 구글과 여기 비슷한 문제를 찾고 있지만 아무것도 작동하지/내 문제가되지 않습니다.ViewPager 및 ViewPagerIndicator에 아무 것도 표시되지 않음

나는 또한 getCount()가 아니라 '정말 돈 3

를 반환하는 동안 즉, 2 번 링크를 가지고 있지만, 내 PagerAdapter에서 instantiateItem 메소드 만 호출하면 모르는, 늪지가

즉 올 수있는 t은 누구 아이디어가있는 경우 내가 큰 기쁨과 함께 할게요, 알고 :

에서 OnCreate을합니다 (ViewPager & ViewPagerIndicator을 포함하는 활동) :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_infos_vehicle); 

    title = (TextView) findViewById(R.id.title); 

    ll = (LinearLayout) findViewById(R.id.mygallery); 

    filenames = new ArrayList<String>(); 

    [...] 

    MyPagerAdapter adapter = new MyPagerAdapter(getResources().getStringArray(R.array.infos_vehicle)); 

    ViewPager pager = (ViewPager) findViewById(R.id.pager); 
    pager.setAdapter(adapter); 

    TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.titles_pager); 
    indicator.setFooterIndicatorStyle(IndicatorStyle.Triangle); 
    indicator.setViewPager(pager); 

    [...] 
} 

MyPagerAdapter 클래스 (3 회 사건은 여기에 있었다.

:

개인 클래스 MyPagerAdapter가 {

private final String[] TITLES; 

public MyPagerAdapter(String[] titles) { 
    TITLES = titles; 
} 

    @Override 
    public int getCount() { 
     return (TITLES.length); 
    } 

    @Override 
    public Object instantiateItem(View collection, int position) { 
     LayoutInflater inflater = (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View v = null; 

     switch (position) { 
     case (0): 
      v = inflater.inflate(R.layout.linear_layout, null); 
      fillGeneral((ViewGroup) v.findViewById(R.id.layout)); 
      break; 
     case (1): 
      v = inflater.inflate(R.layout.linear_layout, null); 
      fillEquipments((ViewGroup) v.findViewById(R.id.layout)); 
      break; 
     case (2): 
      v = new ImageView(getApplicationContext()); 
      ((ImageView) v).setImageDrawable(getApplicationContext().getResources().getDrawable(android.R.drawable.alert_dark_frame)); 
      break; 
     } 
     ((ViewPager) collection).addView(v); 
     return (v); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return (TITLES[position]); 
    } 

    @Override 
    public void destroyItem(View collection, int position, Object view) { 
     ((ViewPager) collection).removeView((View) view); 
    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return (arg0.equals(arg1)); 
    } 

    @Override 
    public Parcelable saveState() { 
     return null; 
    } 

}

그리고 활동 XML PagerAdapter를 확장 :이 엉망이 된 나의 fillGeneral 또는 fillEquipments 방법) 인 경우 더 볼 테스트 참조

<ScrollView 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" > 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/title" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="10dp" 
      android:text="@string/hello_world" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textColor="@color/first_color" /> 

     <Button 
      android:id="@+id/try_vehicle" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/title" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="40dp" 
      android:onClick="tryingAlert" 
      android:text="@string/try_vehicle" /> 

     <Button 
      android:id="@+id/ask_informations" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/try_vehicle" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="20dp" 
      android:onClick="informationsAlert" 
      android:text="@string/ask_informations" /> 

     <Button 
      android:id="@+id/remove_selection" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:onClick="removeFromSelection" 
      android:layout_below="@+id/ask_informations" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="20dp" 
      android:text="@string/remove_selection" /> 

     <HorizontalScrollView 
      android:id="@+id/scroll" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@+id/remove_selection" 
      android:layout_marginTop="18dp" 
      android:scrollbars="none" > 

      <LinearLayout 
       android:id="@+id/mygallery" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" > 
      </LinearLayout> 

     </HorizontalScrollView> 

     <com.viewpagerindicator.TitlePageIndicator 
      android:id="@+id/titles_pager" 
      android:layout_below="@id/scroll" 
      android:layout_height="wrap_content" 
      android:layout_width="fill_parent" /> 

     <android.support.v4.view.ViewPager 
      android:id="@+id/pager" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_below="@id/titles_pager" /> 

    </RelativeLayout> 
</ScrollView> 

나는 무엇을 제공 하는가? (Activity는 여기에서 끝나고 그림과 같이, ViewPagerIndicator는 아무것도 표시하지 않는다.) http://i.imgur.com/vRa1O.jpg (외부 링크, 미안 사진을 게시 할 수 없습니다)

+0

계층 뷰를 사용하여 UI를 검사했을 때 무엇을 찾았습니까? – CommonsWare

+0

@CommonsWare 그것은 내가보기를 원하는 것에 달려 있습니다. : d 저는 TitlePageIndicator를 포함하여 전 세계적으로 내 활동이 잘 표시되지만 ViewPager는 여전히 아이들 (그리고 2 명의 자녀 만, instantiateItem이 가정 됨)을 보여주지 않습니다 3을 만들 수 있습니다!). 어쨌든 당신이 저를 도와 주심에 감사드립니다. :) – Bhullnatik

+1

좋아, 나는 TitleIndicator의 도구 였고, 기본 테마는 그냥 흰색으로 제공했기 때문에 배경과 함께 "보이지 않는"것이었다. [업데이트 된 UI] (http://i.imgur.com/bzf2Q.png) 편집 : 여기서는 볼 수 없지만 TitlePageIndicator는 3 개의 타이틀을 잘 보여줍니다. – Bhullnatik

답변

3

그래, 결국 아무 문제도 없었습니다. 실수 만하고 있습니다.

제가 말한 것처럼 ViewPagerIndicator는 흰색의 흰색 이었기 때문에 잘 보지 못했습니다.

ViewPager의 경우 실제로는 내 ScrollView의 끝 부분에있었습니다. 즉 "실제"화면 공간이 없었기 때문에 android:layout_height="match_parent"은 효과가 없었습니다. ViewPager의 일반적인 문제로 보입니다.이를 적용하기 위해 내가 할 수있는 것을 보여 드리겠습니다.

어쨌든 도움을 주셔서 감사합니다.이 게시물이 도움이 되길 바랍니다.

1

같은 문제에 직면하여 해결 방법이 생겼습니다. 어쩌면 약간의 스파이크는하지만 먼저, XML 파일에

<android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/tabs"/> 

이 후

public interface ViewPagerListener { 
    void onChange(int height); 
} 

ViewPager

내부 체크 조각의 크기에 대한 사용자 정의 리스너를 만들고, 조각으로 구현 설정) 작동

public class FriendProfileTabstFragment extends AbstractFragment implements ViewPagerListener 
.... 
pager = (ViewPager) fragmentView.findViewById(R.id.pager); 
adapter = new TabsPagerAdapter(getChildFragmentManager(),user,this); 

그리고 레이아웃 높이를 설정할 수있는 onChange 메소드를 구현하십시오.

@Override 
public void onChange(int height) { 
    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) pager.getLayoutParams(); 
    params.height = height; 
    pager.setLayoutParams(params); 
} 

자녀 조각 안쪽에 당신이 얻을 수 layout_height

View fragmentView = inflater.inflate(R.layout.tab_without_list_fragment, null); 
userRecordsList = (LinearLayout) fragmentView.findViewById(R.id.user_records_list); 

당신이보기를 채우기 레이아웃 높이를

userRecordsList.measure(userRecordsList.getWidth(),userRecordsList.getHeight()); 
int height = userRecordsList.getMeasuredHeight(); 
listener.onChange(height); 

희망이 도움을받을 때. 더 나은 해결책을 찾으면 저를 시정하십시오.

3

같은 문제가있어서 탭 표시기를 볼 수 없었습니다. 문제는 프로젝트에서 ViewPagerIndicator 프로젝트의 style.xml 파일을 복사하지 않았기 때문입니다. 희망이 미래에 어떤 도움이 될 수 있습니다.