当前位置: 代码迷 >> Android >> 请教关于关于fragment +viewpage,显示有关问题
  详细解决方案

请教关于关于fragment +viewpage,显示有关问题

热度:111   发布时间:2016-04-28 02:17:39.0
请问关于关于fragment +viewpage,显示问题
请问,使用fragment+viewpage, 显示如图 1所示, 但是 那跟 “蓝线”并不在字体下面,请问应该怎么处理呢?
 麻烦会的朋友帮忙回复下吧,谢啦

   图一

想要的效果如下图 2:(“修改”  和 “显示” 要靠左边些,然后 当滑动的时候,底线要刚好在 “修改”或者 “显示”的下边  )


图2

public class ProfessionalActivity extends FragmentActivity {
。。。
       private void InitViewPager() {
           mViewpager = (ViewPager) findViewById(R.id.forumpager);
          fragmentsList = new ArrayList<Fragment>();
          leFragment = new leFragment();
          nalFragment = new nalFragment( );  //两个fragment


          fragmentsList.add(leFragment);
          fragmentsList.add(nalFragment);

         mViewpager.setAdapter(new ProfessionalFragmentPagerAdapter(getSupportFragmentManager(),fragmentsList));  //viewpage
          mViewpager.setCurrentItem(0);
          mViewpager.setOnPageChangeListener(new MyOnPageChangeListener());
      }

         private void InitWidth() {
           BottomLine = (ImageView)findViewById(R.id.bottom_line);  // 蓝线
         bottomlinewidth = BottomLine.getLayoutParams().width;
          Log.d(TAG,"cursor imageview width="+bottomlinewidth);
          DisplayMetrics dm = new DisplayMetrics();
         getWindowManager().getDefaultDisplay().getMetrics(dm);
          int screenwidth = dm.widthPixels;
          position_one = (int)(screenwidth / 2.0);   
      }

       public class MyOnPageChangeListener implements OnPageChangeListener {
          @Override
          public void onPageSelected(int arg0) {
              Animation animation = null;
              switch ( arg0 ) {
              case 0:
                  if ( currIndex == 1 ) {
                      animation = new TranslateAnimation(position_one, 0, 0, 0);
                      textview_professional.setTextColor(resources.getColor(R.color.lightwhite));
                  }
                  textview_article.setTextColor(resources.getColor(R.color.white));
                  break;
              case 1:
                  if ( currIndex == 0 ) {
                      animation = new TranslateAnimation(0, position_one, 0, 0);
                      textview_article.setTextColor(resources.getColor(R.color.lightwhite));
                  }
                  textview_professional.setTextColor(resources.getColor(R.color.white));
                  break;
              }
                currIndex = arg0;
                animation.setFillAfter(true);
                animation.setDuration(300);
                BottomLine.startAnimation(animation);
          }

 XML 布局文件如下:
<?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >
      <LinearLayout
         android:id="@+id/linearLayout1"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:background="@color/coral"
         android:paddingBottom="10dip"
         android:paddingTop="10dip" >
         <TextView
             android:id="@+id/textview_article"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:layout_weight="1.0"
             android:gravity="center"
             android:text="@string/article"
             android:textColor="@color/white"
             android:textSize="18sp" />
         <TextView
             android:id="@+id/textview_professional"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:layout_weight="1.0"
             android:gravity="center"
             android:text="@string/professional"
             android:textColor="@color/lightwhite"
             android:textSize="18sp" />
     </LinearLayout>

   <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_gravity="bottom"
         android:orientation="vertical"
         android:paddingBottom="3dip" >
         <ImageView
             android:id="@+id/bottom_line"

             android:layout_width="40dip"
             android:layout_height="2dip"
             android:layout_marginLeft="20dip"
             android:scaleType="matrix"
             android:src="#8EE" />
     </LinearLayout>

 <android.support.v4.view.ViewPager
         android:id="@+id/forumpager"

         android:layout_width="wrap_content"
         android:layout_height="221dp"
         android:layout_gravity="center"
         android:layout_weight="0.67"
         android:background="#FFFFFF"
         android:flipInterval="30"
         android:persistentDrawingCache="animation" />
 </LinearLayout>



 }
------解决思路----------------------
先把textview画到左边,变成图2那样子,然后你是想用动画显示平移,看上去像是fragment换页绑定imageview的效果,你要想这么干 你平移就好了 ,把起始位置和结束位置拿到用translate平移就行。我想说 你为什么不直接用radioButton和fragment互相绑定,选中替换radioButton上的图片就好了。 如果你非要imageview那样的横条显示 你可以拿个第三方代码 直接实现 做的好看又省事啊
------解决思路----------------------
@ zhaojiaxing91... 
谢谢您的回复
对于这个 “如果你非要imageview那样的横条显示 你可以拿个第三方代码 直接实现 做的好看又省事啊 
请问 能给个链接吗?

谢啦
------解决思路----------------------
最简单的方法,把上面的那个textView和下面的蓝色细线写在一起Layou里,点击哪个tab,就让textview和蓝色细线一起显示,另一个textview和蓝色细线隐藏。至于蓝色细线建议就一个View控件就行了,别整什么ImageView之类的..
------解决思路----------------------
 在布局的时候TextView下面加个ImageView  当你点击不同按钮时 在代码中对控件做相对应的设置
  相关解决方案