如何在图像点击上垂直打开菜单(API-7& above)

时间:2012-11-09 05:53:06

标签: android android-layout android-widget

我在屏幕的底部有一个图像。我希望点击图像时,应该打开一个垂直菜单。我正在使用android api 7.屏幕看起来如下图像

enter image description here

创建的

菜单

    public boolean onCreateOptionsMenu(Menu menu) {
     MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.layout.menu, menu);
        return true;
}

菜单

  <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
 >
<item android:id="@+id/en"
          android:title="English"
            />
<item android:id="@+id/pt"
           android:title="Portugess" />
 <item android:id="@+id/es"
        android:title="Spainsh" />
 </menu>

菜单显示但是时尚。请帮助我!

2 个答案:

答案 0 :(得分:1)

我不知道如何在菜单中使用。 但是我使用布局做了同样的效果。我把代码可能对你有帮助。

您必须根据您的要求更改布局。

activity_main.xml中

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="horizontal" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Buy" />

    <Button
        android:id="@+id/btn_ex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example" />
</LinearLayout>

<LinearLayout
    android:id="@+id/layout_ex"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/linearLayout1"
    android:layout_alignParentRight="true"
    android:layout_marginBottom="18dp"
    android:layout_marginRight="104dp"
    android:gravity="bottom"
    android:orientation="vertical"
    android:visibility="invisible"
     >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example1" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example2" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example3" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example4" />
</LinearLayout>

top.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2500"
    android:fromXDelta="0%"
    android:fromYDelta="200%"
    android:toXDelta="0%"
    android:toYDelta="0%"
    android:zAdjustment="normal" />

MainActivity.java

public class MainActivity extends Activity implements AnimationListener {

    private Button btn_ex;

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

        btn_ex = (Button) findViewById(R.id.btn_ex);

        btn_ex.setOnClickListener(new OnClickListener() {

            private LinearLayout layout_ex;

            public void onClick(View v) {

                Animation movement5;
                layout_ex = (LinearLayout) findViewById(R.id.layout_ex);

                layout_ex.setVisibility(View.VISIBLE);

                // layout3.setVisibility(true); //USE THIS LINE //EDITED

                movement5 = AnimationUtils.loadAnimation(MainActivity.this,
                        R.layout.top);
                movement5.reset();
                movement5.setFillAfter(true);
                movement5.setAnimationListener(MainActivity.this);
                layout_ex.startAnimation(movement5);

            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    public void onAnimationEnd(Animation arg0) {
        // TODO Auto-generated method stub

    }

    public void onAnimationRepeat(Animation arg0) {
        // TODO Auto-generated method stub

    }

    public void onAnimationStart(Animation arg0) {
        // TODO Auto-generated method stub

    }
}

答案 1 :(得分:0)

你可以做这样的事情,

  1. 根据您的需要在主布局中创建一个布局(比如菜单布局)。
  2. e.g:

    <RelativeLayout ....>
       <LinearLayout ....> // Your main layout start here
    
        // your main layout
    
       </LinearLayout> // Your main layout end here
    
       <LinearLayout ....>
    
        // Your menu layout
    
       </LinearLayout>
    
    </RelativeLayout>
    
    1. 定义菜单布局LinearLayout的ID。
    2. 最初作为该菜单布局的属性为android:visibility="gone"因此,主布局无法看到它。
    3. 现在,当您单击图像时,可以根据需要显示带有垂直动画的菜单。
    4. 希望这个想法对你有所帮助。我之前做过这样的事情是可能的,你可以用这种方式实现你的目标。

      如果需要任何帮助,请给我评论。

      享受编码。 :)