2016-09-12 21 views
0

我正在使用fragNav和bottombar插件。我正在嘗試通過FrameLayout製作全屏幕片段。默認情況下,這些插件帶有一個actionBar,我在主題中用「Theme.AppCompat.Light.NoActionBar」刪除。但是,一旦我做到了這一點,我的屏幕上仍然有一個白色的酒吧。當我看着hierarchyView看來,我的FrameLayout是不匹配的父母,但我所有的XML都設置有match_parent寬度和高度..FrameLayout不匹配

MainActivity.java

public class MainActivity extends AppCompatActivity { 

private BottomBar mBottomBar; 
private FragNavController fragNavController; 

private final int TAB_FIRST = FragNavController.TAB1; 
private final int TAB_SECOND = FragNavController.TAB2; 
private final int TAB_THIRD = FragNavController.TAB3; 
private final int TAB_FOURTH = FragNavController.TAB4; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    List<Fragment> fragments = new ArrayList<>(4); 

    fragments.add(FirstFragment.newInstance(0)); 
    fragments.add(SecondFragment.newInstance(0)); 
    fragments.add(ThirdFragment.newInstance(0)); 
    fragments.add(FourthFragment.newInstance(0)); 

     fragNavController = new FragNavController(getSupportFragmentManager(), R.id.container, fragments); 

     //BottomBar menu 
     mBottomBar = BottomBar.attach(this, savedInstanceState); 
     mBottomBar.setItems(R.menu.bottombar_menu); 
     mBottomBar.setOnMenuTabClickListener(new OnMenuTabClickListener() { 
      @Override 
      public void onMenuTabSelected(@IdRes int menuItemId) { 
       //switch between tabs 
       switch (menuItemId) { 
        case R.id.bottomBarItemOne: 
         fragNavController.switchTab(TAB_FIRST); 
         break; 
        case R.id.bottomBarItemSecond: 
         fragNavController.switchTab(TAB_SECOND); 
         break; 
        case R.id.bottomBarItemThird: 
         fragNavController.switchTab(TAB_THIRD); 
         break; 
        case R.id.bottomBarItemFourth: 
         fragNavController.switchTab(TAB_FOURTH); 
         break; 
       } 
      } 

      @Override 
      public void onMenuTabReSelected(@IdRes int menuItemId) { 
       if (menuItemId == R.id.bottomBarItemOne) { 
        fragNavController.clearStack(); 
       } 
      } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     if (fragNavController.getCurrentStack().size() > 1) { 
      fragNavController.pop(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 
    @Override 
    protected void onSaveInstanceState (Bundle outState){ 
     super.onSaveInstanceState(outState); 
     // Necessary to restore the BottomBar's state, otherwise we would 
     // lose the current tab on orientation change. 
     mBottomBar.onSaveInstanceState(outState); 
    } 
} 

activity_main。 XML

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

<FrameLayout 
    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" 
    tools:context=".MainActivity" 
    android:id="@+id/container" 
    android:background="@color/black"> 
</FrameLayout> 

FirstFragment.java

public class FirstFragment extends Fragment { 

public class SwipeDeckAdapter extends BaseAdapter { 

    private List<String> data; 
    private Context context; 

    public SwipeDeckAdapter(List<String> data, Context context) { 
     this.data = data; 
     this.context = context; 
    } 

    @Override 
    public int getCount() { 
     return data.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return data.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 

     View v = convertView; 
     if(v == null){ 
      LayoutInflater inflater = getActivity().getLayoutInflater(); 
      // normally use a viewholder 
      v = inflater.inflate(R.layout.card_view, parent, false); 
     } 
     ((TextView) v.findViewById(R.id.textView2)).setText(data.get(position)); 

     v.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String item = (String)getItem(position); 
       Log.i("MainActivity", item); 
      } 
     }); 

     return v; 
    } 
} 

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

    View view = inflater.inflate(R.layout.fragment_home,container,false); 

    final SwipeDeck cardStack = (SwipeDeck) view.findViewById(R.id.swipe_deck); 
    cardStack.setHardwareAccelerationEnabled(true); 

    Button btn = (Button) view.findViewById(R.id.undobutton); 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      cardStack.swipeTopCardLeft(180); 
     } 
    }); 
    Button btn2 = (Button) view.findViewById(R.id.joinbutton); 
    btn2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      cardStack.swipeTopCardRight(180); 
     } 
    }); 
    final ArrayList<String> testData = new ArrayList<>(); 
    testData.add("0"); 
    testData.add("1"); 
    testData.add("2"); 
    testData.add("3"); 
    testData.add("4"); 

    final SwipeDeckAdapter adapter = new SwipeDeckAdapter(testData, getActivity()); 
    cardStack.setAdapter(adapter); 

    cardStack.setEventCallback(new SwipeDeck.SwipeEventCallback() { 
     @Override 
     public void cardSwipedLeft(int position) { 
      Log.i("MainActivity", "card was swiped left, position in adapter: " + position); 
     } 

     @Override 
     public void cardSwipedRight(int position) { 
      Log.i("MainActivity", "card was swiped right, position in adapter: " + position); 
     } 

     @Override 
     public void cardsDepleted() { 
      Log.i("MainActivity", "no more cards"); 
     } 
     @Override 
     public void cardActionDown() { 
      Log.i("MainActivity", "Down"); 
     } ; 

     @Override 
     public void cardActionUp() { 
      Log.i("MainActivity", "Up"); 
     }; 
    }); 
    return view; 
} 

public static FirstFragment newInstance(int index) { 
    FirstFragment f = new FirstFragment(); 
    Bundle args = new Bundle(); 
    args.putInt("index", index); 
    f.setArguments(args); 
    return f; 
} 

} 

fragment_first.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout      xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:background="@color/black" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="io.MainActivity" 
android:fitsSystemWindows="true"> 

<com.daprlabs.cardstack.SwipeLinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:swipedeck="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/framelayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:weightSum="10"> 


    <com.daprlabs.cardstack.SwipeDeck 
     android:id="@+id/swipe_deck" 
     android:layout_weight="8" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     swipedeck:card_spacing="0dp" 
     swipedeck:max_visible="3" 
     swipedeck:render_above="true" 
     swipedeck:rotation_degrees="15" 
     swipedeck:opacity_end="0.33"> 

    </com.daprlabs.cardstack.SwipeDeck> 


    <RelativeLayout 
     android:id="@+id/rl" 
     android:layout_weight="2" 
     android:layout_width="match_parent" 
     android:layout_height="0dp"> 

     <RelativeLayout 
      android:id="@+id/container" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true"> 
      <Button 
       android:id="@+id/undobutton" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Undo" 
       android:onClick="onClick"/> 

      <Button 
       android:id="@+id/joinbutton" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_toRightOf="@id/undobutton" 
       android:text="Join" 
       android:onClick="onClick"/> 
     </RelativeLayout> 

    </RelativeLayout> 

</com.daprlabs.cardstack.SwipeLinearLayout> 

The FrameLayout Parent that is Ok

The FrameLayout that is not matching the parent

you can see the white space on top (looks like an actionBar but it is not

+0

我不明白你的問題到底是什麼但作爲**提示**:打開你的佈局,看看發生了什麼。同時把你的風格將是有益的:) – Amir

+0

我只是想擺脫的空間,而不是actionBar。我的風格沒有什麼,但是「Theme.AppCompat.Light.NoActionBar」。 – nicolasdavid

+0

您是否使用coordinatorLayout?如果是,請檢查沒有設置layoutBehaviour。其餘的代碼似乎沒問題 – Amir

回答

0

在你父母的RelativeLayout在fragment_first可以刪除了android:fitsSystemWindows =「真」,我認爲這可能是問題的原因。

+0

不,我只是試圖刪除它,它不會改變任何東西。感謝您試圖幫助我! – nicolasdavid