• Android 之 Fragment


    一  左侧标题列表

         1.1  布局 left_fragment.xml

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/darker_gray"
        android:listSelector="@drawable/onitem_selected_bkcolor"/>

         1.2  ListSelector  onitem_selected_bkcolor.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item 
            android:state_window_focused="false"
            android:drawable="@android:color/holo_green_dark"/>
        <item
            android:state_window_focused="true"
            android:drawable="@android:color/holo_green_light"/>
    </selector>

         1.3  自定义 ListItem 布局 代替  android.R.layout.simple_list_item_1

    <?xml version="1.0" encoding="utf-8"?>
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
        android:textColor="@android:color/black"/>

         1.4  自定义 LeftFragment

    package com.example.myfragments;
     
    import android.app.Activity;
    import android.app.ListFragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
     
    //自定义回调函数
    interface onItemSeletedListener
    {
        public void onItemSeleted(int position); 
    }
     
    public class LeftFragment extends ListFragment {
     
        onItemSeletedListener mCallback;
        
        String[] data = {"item0","item1","item2","item3","item4","item5","item6","item7","item8","item9","item10","item11","item12","item13","item14","item15","item16"}; 
        
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // TODO 自动生成的方法存根
            return inflater.inflate(R.layout.left_fragment, container,false);
        }
     
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            // TODO 自动生成的方法存根
            setListAdapter(new ArrayAdapter<String>(getActivity(),  
                       R.layout.listitemdata)); 
            super.onActivityCreated(savedInstanceState);
        }
     
        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            // TODO 自动生成的方法存根
            mCallback.onItemSeleted(position);        
        }
        
        @Override
        public void onAttach(Activity activity) {
            // TODO 自动生成的方法存根
            super.onAttach(activity);
            // This makes sure that the container activity has implemented  
            // the callback interface. If not, it throws an exception  
            try {  
                mCallback = (onItemSeletedListener) activity;  
            } catch (ClassCastException e) {  
                throw new ClassCastException("必须实现 onItemSeletedListener");
            }  
        }
    }
                
     

    二  右侧内容展示

         2.1  布局 right_fragment.xml  

    <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:background="@android:color/background_dark"
        android:orientation="vertical"
        tools:ignore="HardcodedText,UselessParent" >
     
        <ScrollView 
            android:scrollbars="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
     
            <TextView
                android:id="@+id/textview"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="请选择左侧边栏 :)"
                android:textColor="@android:color/holo_orange_dark"
                android:textSize="30sp" />
     
        </ScrollView>
    </LinearLayout>

         2.1  自定义 RightFragment        

    package com.example.myfragments;
     
    import android.app.Fragment;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
     
    public class RightFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            // TODO 自动生成的方法存根
            return inflater.inflate(R.layout.right_fragment, container,false);
        }
        
        //更新数据
        public void update(int position)
        {
            TextView textview=(TextView)getActivity().findViewById(R.id.textview);
            textview.setText("您选择了:" + String.valueOf(position)+" --------------"
                    +" 大江东去浪淘尽, 千古风流人物, 故垒西边, 人道是, 三国周郎赤壁, 乱石穿空, 惊涛拍岸, 卷起千堆雪, 江山如画, 一时多少豪杰。"
                    +" 遥想公瑾当年, 小乔初嫁了, 雄姿英发, 羽扇纶巾, 谈笑间, 樯橹灰飞烟灭, 故国神游, 多情应笑我, 早生华发, 人间如梦, 一樽还酹江月。");
        }
    }
     

    三  添加到 main_layout.xml 中,附着于 Activity 显示

         3.1  布局 main_layout.xml

    <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="horizontal"
        tools:ignore="DisableBaselineAlignment" >
     
        <fragment
            android:id="@+id/left_fragment"
            android:name="com.example.myfragments.LeftFragment"
            android:layout_width="70dp"
            android:layout_height="match_parent"/>
        <View 
            android:layout_width="2dp"
            android:layout_height="match_parent"
            android:background="@android:color/background_dark"/>
     
        <fragment
            android:id="@+id/right_fragment"
            android:name="com.example.myfragments.RightFragment"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"/>
    </LinearLayout>

         3.2  MainActivity

    package com.example.myfragments;
     
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Window;
    import android.view.WindowManager;
     
    public class MainActivity extends Activity implements onItemSeletedListener{
     
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);   
            requestWindowFeature(Window.FEATURE_NO_TITLE);   
            setContentView(R.layout.main_layout);     
            
    //        //添加
    //        FragmentManager fragmentmanager=getFragmentManager();
    //        FragmentTransaction fragmenttransaction=fragmentmanager.beginTransaction();
    //        LeftFragment leftfragment=new LeftFragment();
    //        fragmenttransaction.add(R.id.left_fragment, leftfragment);
    //        fragmenttransaction.commit();
    //        //删除
    //        FragmentManager fragmentmanager=getFragmentManager();
    //        FragmentTransaction fragmenttransaction=fragmentmanager.beginTransaction();
    //        Fragment leftfragment=fragmentmanager.findFragmentById(R.id.left_fragment);
    //        fragmenttransaction.remove(leftfragment);
    //        fragmenttransaction.commit();
    //        //替换
    //        FragmentManager fragmentmanager=getFragmentManager();
    //        FragmentTransaction fragmenttransaction=fragmentmanager.beginTransaction();
    //        fragmenttransaction.replace(R.id.left_fragment, new LeftFragment());
    //        fragmenttransaction.commit();
        }
     
        @Override
        public void onItemSeleted(int position) {
            RightFragment rightFragment=(RightFragment) getFragmentManager().findFragmentById(R.id.right_fragment);
            
            if(rightFragment != null)
                rightFragment.update(position);
        }
    }
     

    四  结果展示

          
     
        
    转载请注明出处 :)


     
     
  • 相关阅读:
    【6.24校内test】T1 江城唱晚
    【6.20校内test】
    【洛谷p1983】车站分级
    【洛谷p2239】螺旋矩阵
    【6.18校内test】T2分数线划定
    【6.18校内test】T1多项式输出
    【洛谷p1981】表达式求值
    【洛谷p1077】摆花
    【洛谷p1158】导弹拦截
    博客园 api
  • 原文地址:https://www.cnblogs.com/james1207/p/3310854.html
Copyright © 2020-2023  润新知