Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>I did something like below: <img src="https://i.stack.imgur.com/je1kO.png" alt="enter image description here"></p> <p><img src="https://i.stack.imgur.com/okJrA.png" alt="enter image description here"></p> <p>Below is my code for something like facebook side menu bar</p> <ol> <li>I put 2 views overlap in a frame layout. The bottom view is the menu, the top view is the content body. </li> <li>And I put the content body into a horizantal scroll view. I also put a view to the left of the content body in the horizantal scroll view. And set the view's background as transparent. </li> <li>Then scroll to content body at begining. So the side menu bar is blocked by the content body. </li> <li>When click a button to show the menu, I scroll the horizantal scroll view to show the transparent placeholder. Then the menu will show up since it is under the transparent placeholder now. </li> </ol> <p>I did not use XML for the interface. I create everything in the below code. I think it should be easy to read and put into your eclipse. </p> <pre><code>package com.chaoshen.androidstudy.facebooklikesidemenubar; import android.os.Bundle; import android.app.Activity; import android.graphics.Color; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.FrameLayout; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; public class MainActivity extends Activity{ private boolean Menu_Displayed=false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Display display = getWindowManager().getDefaultDisplay(); final int width = display.getWidth(); // menu: LinearLayout li_menu = new LinearLayout(this); li_menu.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); li_menu.setOrientation(1);//1 is vertical li_menu.setBackgroundColor(Color.GREEN); Button btn1 = new Button(this); btn1.setText("button 1"); btn1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); li_menu.addView(btn1); //body: final HorizontalScrollView hsv = new HorizontalScrollView(this){ @Override // do not let hsv consume the click itself. Then the view under the hsv will also consume the click //so that the menu will be clicked //when menu is not showed up, let hsv be the only view to consume the click. //so that the menu will not be clicked public boolean onTouchEvent(MotionEvent ev) { if(Menu_Displayed){ return false; } else{ return true; } } }; hsv.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); hsv.setBackgroundColor(Color.TRANSPARENT); hsv.setHorizontalFadingEdgeEnabled(false); hsv.setVerticalFadingEdgeEnabled(false); final LinearLayout li_body = new LinearLayout(this); li_body.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT)); li_body.setOrientation(0);//0 is horizantal li_body.setBackgroundColor(Color.TRANSPARENT); hsv.addView(li_body); //body: place holder transparent TextView placeholder = new TextView(this); placeholder.setTextColor(Color.TRANSPARENT); placeholder.setLayoutParams(new LayoutParams(width-100, LayoutParams.FILL_PARENT)); placeholder.setVisibility(View.INVISIBLE); li_body.addView(placeholder); //body: real content LinearLayout li_content = new LinearLayout(this); li_content.setLayoutParams(new LayoutParams(width, LayoutParams.FILL_PARENT)); li_content.setOrientation(1);//1 is vertical li_content.setBackgroundColor(Color.CYAN); TextView tv1 = new TextView(this); tv1.setText("txt 1"); tv1.setTextSize(40); tv1.setTextColor(Color.BLACK); TextView tv2 = new TextView(this); tv2.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); tv2.setTextSize(50); tv2.setText("txt 2"); tv2.setTextColor(Color.WHITE); //use this button to scroll Button btn_showMenu = new Button(this); btn_showMenu.setText("Menu"); btn_showMenu.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btn_showMenu.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { hsv.post(new Runnable() { @Override public void run() { if(Menu_Displayed){ hsv.smoothScrollTo(width-100, 0); } else{ hsv.smoothScrollTo(0, 0); } Menu_Displayed = !Menu_Displayed; } }); } }); li_content.addView(tv1); li_content.addView(tv2); li_content.addView(btn_showMenu); li_body.addView(li_content); //add menu and body in to frame FrameLayout mainFrame = new FrameLayout(this); mainFrame.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); mainFrame.addView(li_menu); mainFrame.addView(hsv); //scroll to the body real content to block the menu hsv.post(new Runnable() { @Override public void run() { hsv.scrollBy(width-100, 0); } }); setContentView(mainFrame); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload