ペインは常にSlidingPanelayoutの実装で開いています -- java フィールド と android フィールド と pane フィールド と slidingpanelayout フィールド 関連 問題

Pane is always opening in SlidingPaneLayout implementation












0
vote

問題

日本語

下記のコードの問題は、ペインが常にデフォルトで開かれることです。明らかに、私はデフォルトでペイン(子)を開くことを望んでいません。ユーザーがLV_SCHEDULEをクリックすると、ペインを開く必要があります。そのため、フラグメントがロードされると、最初にペインをスライドさせてLV_SCHEDULEを表示する必要があります。

これはXML:

です <事前> <コード> <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SlidingPaneLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scheduledblocks_sliding_pane_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/ll_left_pane_scheduled" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" > <ListView android:id="@+id/lv_schedule" android:layout_width="1000dp" android:layout_height="match_parent" android:layout_gravity="left" android:layout_marginRight="0dp" /> </LinearLayout> <!-- Framelayout to display Fragments --> <FrameLayout android:id="@+id/frame_container_scheduledblocksslidingpanedetailview" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="20dp" />

これはJavaファイルです:

<事前> <コード> public class Fragment_allScheduledBlocks extends Fragment implements View.OnClickListener, OnItemClickListener { private Handler handler; private ActionBarHelper mActionBar; private Thread thread = new Thread(); public Fragment_allScheduledBlocks() { } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { mLogger.printToLog(Constants.LOG_ENTRY, " onCreateView of Fragment_scheduled_blocks.java", Constants.TAG_ALL); v = inflater.inflate(R.layout.fragment_scheduled_blocks, container, false); mSlidingLayout = (SlidingPaneLayout) v .findViewById(R.id.scheduledblocks_sliding_pane_layout); mSlidingLayout.setPanelSlideListener(new SliderListenerSchBlocks()); mSlidingLayout.openPane(); lv_scheduled = (ListView) v.findViewById(R.id.lv_scheduled); lv_scheduled.setOnItemClickListener(this); mActionBar = createActionBarHelper(); mActionBar.init(); return v; } /** * This panel slide listener updates the action bar accordingly for each * panel state. */ private class SliderListenerSchBlocks extends SlidingPaneLayout.SimplePanelSlideListener { @Override public void onPanelOpened(View panel) { mActionBar.onPanelOpened(); Log.v(Constants.TAG, "in onPanelOPened inside SliderListener"); getActivity().setTitle("LISTVIEW BLOCKS"); mPrefs.printAllMySharedPrefs(getActivity().getApplicationContext()); } @Override public void onPanelClosed(View panel) { mActionBar.onPanelClosed(); Log.v(Constants.TAG, "in onPanelClosed inside SliderListener"); mPrefs.printAllMySharedPrefs(getActivity().getApplicationContext()); } @Override public void onPanelSlide(View panel, float slideOffset) { // TODO Auto-generated method stub super.onPanelSlide(panel, slideOffset); } } @Override public void onClick(View v) { // TODO Auto-generated method stub } private class ActionBarHelper { public void init() { } public void onPanelClosed() { } public void onPanelOpened() { } public void onFirstLayout() { } public void setTitle(CharSequence title) { } } /* * Create a compatible helper that will manipulate the action bar if * available. */ private ActionBarHelper createActionBarHelper() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { // return new ActionBarHelperICS(); return new ActionBarHelper(); } else { return new ActionBarHelper(); } } }
英語

Problem with my code below is that the Pane always gets opened by default, no idea why. Obviously, I dont want the Pane (child) to be opened by default. Only when user clicks on lv_schedule, the pane should open. So when the fragment loads, I have to actually slide out the pane first to see the lv_schedule.

This is the XML:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.SlidingPaneLayout     xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/scheduledblocks_sliding_pane_layout" android:layout_width="match_parent" android:layout_height="match_parent" >  <LinearLayout     android:id="@+id/ll_left_pane_scheduled"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:orientation="vertical" >      <ListView         android:id="@+id/lv_schedule"         android:layout_width="1000dp"         android:layout_height="match_parent"         android:layout_gravity="left"         android:layout_marginRight="0dp"         />  </LinearLayout>  <!-- Framelayout to display Fragments -->  <FrameLayout     android:id="@+id/frame_container_scheduledblocksslidingpanedetailview"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:layout_marginLeft="20dp" /> 

This is the JAVA file:

public class Fragment_allScheduledBlocks extends Fragment implements     View.OnClickListener, OnItemClickListener {  private Handler handler;  private ActionBarHelper mActionBar;  private Thread thread = new Thread();  public Fragment_allScheduledBlocks() { }  @Override public View onCreateView(LayoutInflater inflater,         @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {      mLogger.printToLog(Constants.LOG_ENTRY,             " onCreateView of Fragment_scheduled_blocks.java",             Constants.TAG_ALL);      v = inflater.inflate(R.layout.fragment_scheduled_blocks, container,             false);      mSlidingLayout = (SlidingPaneLayout) v             .findViewById(R.id.scheduledblocks_sliding_pane_layout);     mSlidingLayout.setPanelSlideListener(new SliderListenerSchBlocks());     mSlidingLayout.openPane();       lv_scheduled = (ListView) v.findViewById(R.id.lv_scheduled);     lv_scheduled.setOnItemClickListener(this);      mActionBar = createActionBarHelper();     mActionBar.init();      return v; }   /**  * This panel slide listener updates the action bar accordingly for each  * panel state.  */ private class SliderListenerSchBlocks extends         SlidingPaneLayout.SimplePanelSlideListener {     @Override     public void onPanelOpened(View panel) {         mActionBar.onPanelOpened();         Log.v(Constants.TAG, "in onPanelOPened inside SliderListener");         getActivity().setTitle("LISTVIEW BLOCKS");          mPrefs.printAllMySharedPrefs(getActivity().getApplicationContext());     }      @Override     public void onPanelClosed(View panel) {         mActionBar.onPanelClosed();         Log.v(Constants.TAG, "in onPanelClosed inside SliderListener");         mPrefs.printAllMySharedPrefs(getActivity().getApplicationContext());     }      @Override     public void onPanelSlide(View panel, float slideOffset) {         // TODO Auto-generated method stub         super.onPanelSlide(panel, slideOffset);     } }     @Override public void onClick(View v) {     // TODO Auto-generated method stub  }  private class ActionBarHelper {     public void init() {     }      public void onPanelClosed() {     }      public void onPanelOpened() {     }      public void onFirstLayout() {     }      public void setTitle(CharSequence title) {     } }  /*  * Create a compatible helper that will manipulate the action bar if  * available.  */ private ActionBarHelper createActionBarHelper() {     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {         // return new ActionBarHelperICS();         return new ActionBarHelper();     } else {         return new ActionBarHelper();     } }  } 
</div
           

回答リスト

1
 
vote
vote
ベストアンサー
 

<コード> SlidingPaneLayout は、マスター/詳細パターンに使用することができますが、それはその意図されていません。そのため、デフォルトでは詳細を表示したいと思っています。 Javaコードでその動作を変更する必要があります。

このサンプルプロジェクト SlidingPaneLayout < / Detail Patternの/コード>マスター/詳細パターンの場合は、「ペイン」を適切に処理するためのいくつかのアクティビティコードがあります。

<事前> <コード> int0

特に

  • 起動する

  • を起動すると、ペイン(すなわち、マスター)を開く
  • ユーザがマスター内のアイテムをクリックしたときにペインを閉じて詳細

  • を表示します。
  • ユーザーが戻るボタンをクリックしてペインを閉じたら、通常の戻るボタン処理を行うのではなく、ペイン(マスターに戻る)を開きます。

 

SlidingPaneLayout can be used for the master/detail pattern, but that's not its intended use. As such, by default, it wants to show the detail. You will need to alter that behavior in Java code.

This sample project implements a SlidingPaneLayout for the master/detail pattern, with some activity code to handle the "pane" appropriately:

/***   Copyright (c) 2008-2013 CommonsWare, LLC   Licensed under the Apache License, Version 2.0 (the "License"); you may not   use this file except in compliance with the License. You may obtain   a copy   of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required   by applicable law or agreed to in writing, software distributed under the   License is distributed on an "AS IS" BASIS,   WITHOUT WARRANTIES OR CONDITIONS   OF ANY KIND, either express or implied. See the License for the specific   language governing permissions and limitations under the License.    From _The Busy Coder's Guide to Android Development_     http://commonsware.com/Android  */  package com.commonsware.android.eu4you4;  import android.app.Activity; import android.os.Bundle; import android.support.v4.widget.SlidingPaneLayout;  public class EU4You extends Activity implements     CountriesFragment.Contract {   private DetailsFragment details=null;   private SlidingPaneLayout panes=null;    @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);      details=         (DetailsFragment)getFragmentManager().findFragmentById(R.id.details);     panes=(SlidingPaneLayout)findViewById(R.id.panes);     panes.openPane();   }    @Override   public void onBackPressed() {     if (panes.isOpen()) {       super.onBackPressed();     }     else {       panes.openPane();     }   }    @Override   public void onCountrySelected(Country c) {     details.loadUrl(getString(c.url));     panes.closePane();   } } 

Specifically:

  • It opens the pane (i.e., the master) when we start up

  • It closes the pane when the user clicks on an item in the master, to show the detail

  • If the user clicks the BACK button, and the pane is closed, it opens the pane (returning to the master) instead of doing normal BACK button processing

</div
 
 
3
 
vote

ナビゲーションアイコンを介してペインを開きたい場合は、次のように使用できます。

<事前> <コード> int1

歓声、幸せなコーディング。 ;)

 

In case you want to open pane via navigation icon you can then use this :

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_pane);      layout = (SlidingPaneLayout) findViewById(R.id.sliding_pane_layout);      getToolbar().setNavigationIcon(R.drawable.ic_menu_white_24dp);     getToolbar().setNavigationOnClickListener(this);  }  @Override public void onClick(View view) {     if (layout != null) {         if (!layout.isOpen()) {             layout.openPane();         } else {             layout.closePane();         }     } } 

Cheers, happy coding. ;)

</div
 
 

関連する質問

9  ブートストラップ3 CSSで動作するスライドオーバーレイパネル  ( Sliding overlay panel that works with bootstrap 3 css ) 
ブートストラップ3 CSSファイルを破棄しないjQueryを使用してスライドオーバーレイパネルを際限なく検索しました。しかし、私は見つけることができません。フォームのようなパネルが必要です。ドロップダウン、選択可能なグリッド、入力ボックスなどが必要です。このメ...

1  Android SlidingPanelayout Fade  ( Android slidingpanelayout fade ) 
SlidingPanelayoutのプロトタイプアプリを試しています。私のSlidingPanelayoutは灰色で、ボディビューは純粋な白です。 しかし、私がスライドするとき、ボディページの小さな目に見える領域は、暗いスクリーニングでわずかに暗くなるか、ま...

4  Android SlidingPanelayoutは間違った景色を衰退させます  ( Android slidingpanelayout fades wrong views ) 
私は私のアプリでSlidePanelayoutを使用しています。 。どのようにしてフェージングを完全に取り除くか、または全体の覆われたペインをフェードアウトにすることができますか? ...

0  SlidingPanelayoutプログラムで左パネルの幅を変更します  ( Slidingpanelayout programmatically change the width of the left panel ) 
私が欲しいのは、ユーザーが私のアプリを開いた最初の時間がフルスクリーンを使うことができます! それから私はそれをサイズ変更する必要があります。 ...

2  Android「SlidingPanelayout」を押してください  ( Make android slidingpanelayout push actionbar too ) 
<コード> android.support.v4.widget.SlidingPaneLayout を使用してスライドメニューを作成しています。 ALAS、<コード> SlidingPaneLayout6 は主な内容をプッシュし、アクションバーを含まない。私...

2  ScrollViewが付いているAndroidスライドパネル  ( Android sliding panel with scrollview ) 
リンクからスライディングパネルを使用しようとしていますここに直面しています画像に示す問題: 私の考えは、ユーザーがボトムメニューをスワイプしたときにカスタムコンテンツを持つことです。このコンテンツをスクロールする可能性があります。しかし、パネルがアンカー状...

6  展開時にAndroidsLidingUppanelの高さを制限できますか  ( How can i limit the height of androidslidinguppanel when expanded ) 
アンカーポイントを定義していて、それはうまく機能しますが、拡大したときにスライドアップパネルアウトの最大高さを制御する必要があります。 どうすればいいですか? ...

0  閉じるアンドロイドスライドアップパネル(Unlono Library)が開いている  ( Close android sliding up panel umano library on drawer open ) 
私は私のAndroidアプリケーションでUnlonoライブラリによって提供されるスライドパネルを実装しました。このようなスライド上のパネルの内側に引き出しレイアウトを使用しました XML <事前> <コード> <RelativeLayout xmlns:a...

1  SlidingPanelayout - あらゆる場所から閉じる  ( Slidingpanelayout close from everywhere ) 
Panelの内容の外部に触れる場合だけでなく、 void generateLotteryNumbers(int lotteryNumbers[]) { srand (time(NULL)); const int arraySize = 5;...

0  SlidingPanelayout:スムーズなアニメーションなしでスライド?  ( Slidingpanelayout slide without smooth animation ) 
最新のサポートライブラリで利用可能な新しい public class A { ... public int SomeMethod(string arg){ ... switch(arg) { ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有