Anndroid 标题菜单栏切换界面

  以前终觉得这种非常难,现在才发现其实简单的布局加fragment即可实现,先上效果图:

  

 

  大致就三个布局搞定,一个布局用来设置背景色,一个布局嵌入在前一个布局的里边,用来存放文本标签,另一个布局就是用于显示内容。代码如下:

  

  <LinearLayout 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"

     android:orientation="vertical"

      android:background="@color/y_gray"

      tools:context="com.exa.changecolortitle.MainActivity$PlaceholderFragment" >

       <RelativeLayout

          android:layout_width="match_parent"

          android:layout_height="50dp"

          android:background="@color/bg_title_blue"

          android:padding="5dp" >

             <LinearLayout

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:layout_centerInParent="true"

                android:background="@drawable/l_bg3" >

                   <TextView

                      android:id="@+id/tv_signup"

                      android:layout_width="80dp"

                      android:layout_height="wrap_content"

                      android:gravity="center_horizontal"

                      android:padding="5dp"

                      android:text="飞  牛"

                      android:textSize="16sp" />

                 <TextView

                      android:id="@+id/tv_course"

                      android:layout_width="80dp"

                      android:layout_height="wrap_content"

                      android:gravity="center_horizontal"

                      android:padding="5dp"

                      android:text="冲  天"

                      android:textSize="16dp" />

            </LinearLayout>

       </RelativeLayout>

 

      <LinearLayout

          android:id="@+id/ll_fragment2"

          android:layout_width="match_parent"

          android:layout_height="0dp"

          android:layout_weight="1"

          android:orientation="vertical" >

      </LinearLayout>

   </LinearLayout>

   

  窗体实现的java代码如下:

  

  public class MainActivity extends FragmentActivity implements OnClickListener {

 

       private TextView tv_feiniu;// 第一个标题文本

       private TextView tv_chongtian;// 第二个标题文本

       private Fragment fragment1;// 第一个操作界面

       private Fragment fragment2;// 第二个操作界面

  

       private android.app.FragmentManager fm;//管理器

 

      @Override

       protected void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setContentView(R.layout.fragment_main);

 

            initView();

       }

 

      private void initView() {

            // 实例化第一个标签

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

            // 实例化第二个标签

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

            //设置监听事件

            tv_feiniu.setOnClickListener(this);

            tv_chongtian.setOnClickListener(this);

 

            selectFragment(0);// 设置默认选项

        }

 

       @Override

       public void onClick(View v) {

            switch (v.getId()) {

            case R.id.tv_feiniu:

                selectFragment(0);

             break;

            case R.id.tv_chongtian:

                selectFragment(1);

             break;

           default:

            break;

           }

       }

 

      // 切换Fragment

     private void selectFragment(int i) {

          FragmentTransaction transaction = getSupportFragmentManager()

                 .beginTransaction();

          hideFragment(transaction);

          changeView(i);// 设置选项颜色

          switch (i) {

          case 0:

            if (fragment1 == null) {

                 fragment1 = new Fragment1();

                 transaction.add(R.id.ll_fragment2, fragment1);

            }

           transaction.show(fragment1);

           break;

 

          case 1:

            if (fragment2 == null) {

               fragment2 = new Fragment2();

               transaction.add(R.id.ll_fragment2, fragment2);

            }

            transaction.show(fragment2);

           break;

          }

         transaction.commit();

     }

 

     // 隐藏fragment

     private void hideFragment(FragmentTransaction transaction) {

          if (fragment1 != null) {

              transaction.hide(fragment1);

          }

         if (fragment2 != null) {

              transaction.hide(fragment2);

          }

 

     }

 

     //改变字体和背景色状态

     @SuppressLint("NewApi")

     private void changeView(int i) {

          if (i == 0) {

               //设置背景色及字体颜色

              tv_chongtian.setBackgroundResource(R.drawable.l_bg8);

              tv_chongtian.setTextColor(getResources().getColor(R.color.white));

              tv_feiniu.setBackground(null);

              tv_feiniu.setTextColor(getResources().getColor(R.color.blue));

           } else if (i == 1) {

               tv_feiniu.setBackgroundResource(R.drawable.l_bg7);

              tv_feiniu.setTextColor(getResources().getColor(R.color.white));

              tv_chongtian.setBackground(null);

              tv_chongtian.setTextColor(getResources().getColor(R.color.blue));

           }

     }

   }

 

  drawable中的三个设置标题按钮边框及背景色分别入下:

  l_bg3.xml:

    

    <?xml version="1.0" encoding="utf-8"?>

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

         <item>

            <shape>

                <solid android:color="@color/white" />

                 <corners android:radius="5dp" />

                 <stroke

                    android:width="1dp"

                    android:color="@color/blue" />

            </shape>

        </item>

        <item

            android:bottom="1dp"

            android:left="1dp"

            android:right="1dp"

            android:top="1dp">

            <shape>

                 <solid android:color="@color/white" />

                 <corners android:radius="5dp" />

                 <stroke

                    android:width="1dp"

                    android:color="@color/white" />

                 <padding

                    android:bottom="1dp"

                    android:left="1dp"

                    android:right="1dp"

                    android:top="1dp" >

                </padding>

            </shape>

        </item>

     </layer-list>

 

    l_bg7.xml:

       <?xml version="1.0" encoding="utf-8"?>

        <shape xmlns:android="http://schemas.android.com/apk/res/android" >

             <corners

                  android:bottomLeftRadius="5dp"

                  android:topLeftRadius="5dp" />

             <solid android:color="@color/blue" />

               <stroke

                  android:width="1dp"

                  android:color="@color/white" />

         </shape>

 

    l_bg8.xml:

      <?xml version="1.0" encoding="utf-8"?>

      <shape xmlns:android="http://schemas.android.com/apk/res/android" >

           <corners

                android:bottomRightRadius="5dp"

                android:topRightRadius="5dp" />

           <solid android:color="@color/blue" />

            <stroke

                android:width="1dp"

                android:color="@color/white" />

      </shape>

 

  接下来的Fragment自定义即可。

posted @ 2016-05-30 22:55  飞牛冲天  阅读(1360)  评论(0编辑  收藏  举报