1

SlidingPaneLayout はスライドしません。

pane.isSlideable() はfalseです! この方法でレイアウトを膨らませます。

 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

                // Inflate the layout for this fragment
                slidingView =  inflater.inflate(R.layout.available_nodes_fragment, container, false);


                SlidingPaneLayout pane = (SlidingPaneLayout)slidingView.findViewById(R.id.sliding_pane_layout);

                Fragment fragmentA = new ListNodesFragment();
                FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
                transaction.add(R.id.child_fragmentA, fragmentA );

                Fragment fragmentB = new ReserveNodesFragment();
                transaction.add(R.id.child_fragmentB, fragmentB);

                transaction.commit();

                //pane.setPanelSlideListener(new SliderListener());
                pane.openPane();
                Log.i("Available Nodes","PANE IS SLIDABLE" + pane.isSlideable());

                return slidingView;

}

私が膨らませるavailable_nodes_fragmentレイアウトは次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/sliding_pane_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


         <LinearLayout
          android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
           <FrameLayout
          android:id="@+id/child_fragmentA"
          android:layout_width="180dp"
          android:layout_height="match_parent"
          android:layout_gravity="left" />

           <FrameLayout
         android:id="@+id/child_fragmentB"
         android:layout_width="100dp"
         android:layout_height="match_parent"
         android:layout_gravity="right" />
         </LinearLayout>


</android.support.v4.widget.SlidingPaneLayout>

SlidingPaneLayout がスライドしない理由がわかりません。この問題が、ネストされたフラグメントを使用しているという事実と関係があるかどうかはわかりません。


私はいくつかの進歩を遂げています。

available_nodes_fragmentレイアウト ファイルを変更しました。

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

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/reserve_nodes"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:descendantFocusability="beforeDescendants"
        android:focusableInTouchMode="true"
        android:orientation="vertical" >

      <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:id="@+id/sliding_pane_layout"
       android:layout_width="match_parent"
       android:layout_height="match_parent">
        <FrameLayout
            android:id="@+id/child_fragmentA"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_gravity="left"
            android:layout_marginRight="25dp"           
            android:background="#A588DC" />

        <FrameLayout
            android:id="@+id/child_fragmentB"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:background="#B6D4D3"
            android:layout_gravity="right" />

      </android.support.v4.widget.SlidingPaneLayout>


        <Button 
            android:id="@+id/btnReserveNodes"
            android:layout_width="wrap_content"
            android:layout_height="70dp"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="30dp"
            android:text="Reserve"/>
</RelativeLayout>

これで、SlidePaneLayout レイアウトがスライドします。何故かはわからない。FrameLayouts の固定の layout_width を wrap_content に変更すると、SlidePaneLayout がスライドし始めました。

私の問題は、ListView で id= "child_fragmentA"の FrameLayout を使用して、画面の30%を水平方向に取得することです。FrameLayout は重みをサポートしていないため、それを行う方法が見つかりませんでした。

ListNodesFragment と ReserveNodesFragment のコードも提供します。

ListFragments.java

public class ListNodesFragment extends Fragment {



     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

         View listNodesView = inflater.inflate(R.layout.nodes_categories_listview, container, false);

         String[] items = { getResources().getString(R.string.orbit_nodes),
            getResources().getString(R.string.grid_nodes),
            getResources().getString(R.string.usrp_nodes),
            getResources().getString(R.string.diskless_nodes), 
            getResources().getString(R.string.icarus_nodes) ,
            getResources().getString(R.string.base_station)
          };

         ListView nodesListView = (ListView) listNodesView.findViewById(R.id.nodes_list);

         ArrayAdapter<String> adapt = new ArrayAdapter<String>(getActivity(), R.layout.nodes_categories_listview_item, items);
         nodesListView.setAdapter(adapt);
         return listNodesView;


     }

}

ReserveNodesFragment.java

public class ReserveNodesFragment extends Fragment {


     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View reserveNodesView = inflater.inflate(R.layout.reserve_nodes_fragment, container, false);
              TextView txtView = (TextView) reserveNodesView.findViewById(R.id.textView1);
              txtView.setText("fragment 2");
            return reserveNodesView;
       }


}
4

0 に答える 0