當前位置:首頁 » 安卓系統 » popmenuandroid

popmenuandroid

發布時間: 2022-05-28 12:04:29

㈠ android中怎樣控制popupmenu字體的大小

通過設置popupMenu的xml布局文件,可以使用android:width,裡面設置合適的尺寸以適配手機型號,建議使用android:width=「wrap_content".
android 中尺寸的設置幾種形式,可以是wrap_content/fill_parent/還可以是具體的數值,不如13dp。

㈡ android 怎麼實現左側推出導航菜單

Android左側推出導航菜單可以讓Activity繼承PopupWindow類來實現的彈出窗體,布局可以根據自己定義設計。彈出效果主要使用了translate和alpha樣式實現。具體的做法是下列代碼:

java">第一步:設計彈出窗口xml:

Xml代碼
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
>

<LinearLayout
android:id="@+id/pop_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:background="@drawable/btn_style_alert_dialog_background"
>


<Button
android:id="@+id/btn_take_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="20dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_pick_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="從相冊選擇"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_cancel"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="15dip"
android:layout_marginBottom="15dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="取消"
android:background="@drawable/btn_style_alert_dialog_cancel"
android:textColor="#ffffff"
android:textStyle="bold"

/>
</LinearLayout>
</RelativeLayout>
第二步:創建SelectPicPopupWindow類繼承PopupWindow:

Java代碼
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.drawable.ColorDrawable;
importandroid.view.LayoutInflater;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.View.OnTouchListener;
importandroid.view.ViewGroup.LayoutParams;
importandroid.widget.Button;
importandroid.widget.PopupWindow;

{


privateButtonbtn_take_photo,btn_pick_photo,btn_cancel;
privateViewmMenuView;

publicSelectPicPopupWindow(Activitycontext,OnClickListeneritemsOnClick){
super(context);
LayoutInflaterinflater=(LayoutInflater)context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMenuView=inflater.inflate(R.layout.alert_dialog,null);
btn_take_photo=(Button)mMenuView.findViewById(R.id.btn_take_photo);
btn_pick_photo=(Button)mMenuView.findViewById(R.id.btn_pick_photo);
btn_cancel=(Button)mMenuView.findViewById(R.id.btn_cancel);
//取消按鈕
btn_cancel.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewv){
//銷毀彈出框
dismiss();
}
});
//設置按鈕監聽
btn_pick_photo.setOnClickListener(itemsOnClick);
btn_take_photo.setOnClickListener(itemsOnClick);
//設置SelectPicPopupWindow的View
this.setContentView(mMenuView);
//設置SelectPicPopupWindow彈出窗體的寬
this.setWidth(LayoutParams.FILL_PARENT);
//設置SelectPicPopupWindow彈出窗體的高
this.setHeight(LayoutParams.WRAP_CONTENT);
//設置SelectPicPopupWindow彈出窗體可點擊
this.setFocusable(true);
//設置SelectPicPopupWindow彈出窗體動畫效果
this.setAnimationStyle(R.style.AnimBottom);
//實例化一個ColorDrawable顏色為半透明
ColorDrawabledw=newColorDrawable(0xb0000000);
//設置SelectPicPopupWindow彈出窗體的背景
this.setBackgroundDrawable(dw);
//mMenuView添加OnTouchListener監聽判斷獲取觸屏位置如果在選擇框外面則銷毀彈出框
mMenuView.setOnTouchListener(newOnTouchListener(){

publicbooleanonTouch(Viewv,MotionEventevent){

intheight=mMenuView.findViewById(R.id.pop_layout).getTop();
inty=(int)event.getY();
if(event.getAction()==MotionEvent.ACTION_UP){
if(y<height){
dismiss();
}
}
returntrue;
}
});

}

}

第三步:編寫MainActivity類實現測試:

Java代碼
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Gravity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.TextView;

{

//自定義的彈出框類
;

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextViewtv=(TextView)this.findViewById(R.id.text);
//把文字控制項添加監聽,點擊彈出自定義窗口
tv.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
//實例化SelectPicPopupWindow
menuWindow=newSelectPicPopupWindow(MainActivity.this,itemsOnClick);
//顯示窗口
menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main),Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0);//設置layout在PopupWindow中顯示的位置
}
});
}

//為彈出窗口實現監聽類
=newOnClickListener(){

publicvoidonClick(Viewv){
menuWindow.dismiss();
switch(v.getId()){
caseR.id.btn_take_photo:
break;
caseR.id.btn_pick_photo:
break;
default:
break;
}


}

};

}

上述的代碼實現了從底部彈出,也可以根據PopupWindow類設置從左下部彈出。

Android的對話框有兩種:PopupWindow和AlertDialog。它們的不同點在於:

AlertDialog的位置固定,而PopupWindow的位置可以隨意

AlertDialog是非阻塞線程的,而PopupWindow是阻塞線程的

PopupWindow的位置按照有無偏移分,可以分為偏移和無偏移兩種;按照參照物的不同,可以分為相對於某個控制項(Anchor錨)和相對於父控制項。具體如下

showAsDropDown(View anchor):相對某個控制項的位置(正左下方),無偏移

showAsDropDown(View anchor, int xoff, int yoff):相對某個控制項的位置,有偏移

showAtLocation(View parent, int gravity, int x, int y):相對於父控制項的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以設置偏移或無偏移

㈢ Android如何自定義Menu

新建自定義Menu————>TabMenu.java如下:

package com.ncw;

import android.content.Context;

import android.graphics.Color;

import android.graphics.drawable.ColorDrawable;

import android.view.Gravity;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.PopupWindow;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.LinearLayout.LayoutParams;

public class TabMenu extends PopupWindow {

private GridView gridView;

private LinearLayout mLayout;

public TabMenu(Context context, OnItemClickListener bodyClick, int colorBgTabMenu) {

super(context);

mLayout = new LinearLayout(context);

mLayout.setOrientation(LinearLayout.VERTICAL);

gridView = new GridView(context);

gridView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,

LayoutParams.WRAP_CONTENT));

gridView.setSelector(new ColorDrawable(Color.TRANSPARENT));// 選中的時候為透明色

gridView.setNumColumns(4);

gridView.setStretchMode(GridView.STRETCH_COLUMN_WIDTH);

gridView.setVerticalSpacing(0);

gridView.setHorizontalSpacing(0);

gridView.setPadding(0, 0, 0, 0);

gridView.setGravity(Gravity.CENTER);

gridView.setOnItemClickListener(bodyClick);

mLayout.addView(gridView);

// 設置默認項

this.setContentView(mLayout);

this.setWidth(LayoutParams.FILL_PARENT);

this.setHeight(LayoutParams.WRAP_CONTENT);

this.setBackgroundDrawable(new ColorDrawable(colorBgTabMenu));// 設置TabMenu菜單背景

this.setFocusable(true);// menu菜單獲得焦點 如果沒有獲得焦點menu菜單中的控制項事件無法響應

}

public void SetBodySelect(int index, int colorSelBody) {

int count = gridView.getChildCount();

for (int i = 0; i < count; i++) {

if (i != index)

((LinearLayout) gridView.getChildAt(i))

.setBackgroundColor(Color.TRANSPARENT);

}

((LinearLayout) gridView.getChildAt(index))

.setBackgroundColor(colorSelBody);

}

public void SetBodyAdapter(MenuBodyAdapter bodyAdapter) {

gridView.setAdapter(bodyAdapter);

}

/**

* 自定義Adapter,TabMenu的每個分頁的主體

*

*/

static public class MenuBodyAdapter extends BaseAdapter {

private Context mContext;

private int[] resID;

/**

* 設置TabMenu的分頁主體

*

* @param context

* 調用方的上下文

* @param resID

*/

public MenuBodyAdapter(Context context, int[] resID) {

this.mContext = context;

this.resID = resID;

}

@Override

public int getCount() {

return resID.length;

}

public Object getItem(int position) {

return makeMenyBody(position);

}

public long getItemId(int position) {

return position;

}

private LinearLayout makeMenyBody(int position) {

LinearLayout result = new LinearLayout(this.mContext);

result.setOrientation(LinearLayout.VERTICAL);

result.setGravity(Gravity.CENTER_HORIZONTAL

| Gravity.CENTER_VERTICAL);

result.setPadding(0, 0, 0, 0);

ImageView img = new ImageView(this.mContext);

img.setBackgroundResource(resID[position]);

result.addView(img, new LinearLayout.LayoutParams(new LayoutParams(

LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)));

return result;

}

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

return makeMenyBody(position);

}

}

}

?

1

使用自定義Menu————>testTabMenu.java

package com.ncw;

import android.app.Activity;

import android.graphics.Color;

import android.os.Bundle;

import android.util.Log;

import android.view.Gravity;

import android.view.Menu;

import android.view.View;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

public class testTabMenu extends Activity {

TabMenu.MenuBodyAdapter bodyAdapter = new TabMenu.MenuBodyAdapter(this,

new int[] { R.drawable.menu_01, R.drawable.menu_02,

R.drawable.menu_03, R.drawable.menu_04 });

TabMenu tabMenu;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

tabMenu = new TabMenu(this, new BodyClickEvent(), R.drawable.menu_bg);// 出現與消失的動畫

tabMenu.update();

tabMenu.SetBodyAdapter(bodyAdapter);

}

class BodyClickEvent implements OnItemClickListener {

@Override

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,

long arg3) {

tabMenu.SetBodySelect(arg2, Color.GRAY);

Log.i("Log", " BodyClickEvent implements OnItemClickListener "

+ arg2);

}

}

@Override

/**

* 創建MENU

*/

public boolean onCreateOptionsMenu(Menu menu) {

menu.add("menu");// 必須創建一項

return super.onCreateOptionsMenu(menu);

}

@Override

/**

* 攔截MENU

*/

public boolean onMenuOpened(int featureId, Menu menu) {

if (tabMenu != null) {

if (tabMenu.isShowing())

tabMenu.dismiss();

else {

tabMenu.showAtLocation(findViewById(R.id.LinearLayout01),

Gravity.BOTTOM, 0, 0);

}

}

return false;// 返回為true 則顯示系統menu

}

}


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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/LinearLayout01"

android:layout_width="fill_parent"

android:layout_height="fill_parent" >

<TextView

android:id="@+id/TextView01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="自定義Menu————張亞龍" >

</TextView>

</LinearLayout>

運行效果圖:

㈣ android用 popupmenu怎麼顯示在按鈕周圍

/**
* 自定義PopupMenu
* Created by hanj on 15-3-17.
*/
public class PopupMenuActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

LinearLayout lin = new LinearLayout(this);
Button btn = new Button(this);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
btn.setLayoutParams(p);
lin.addView(btn);

btn.setText("顯示PopupMenu");
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showPopupMenu(PopupMenuActivity.this, v);
}
});

setContentView(lin);
}

//當前選擇的menuItem的id
private int checkedItemId = R.id.menu_setting_wifi;

private void showPopupMenu(final Context context, View ancher) {
PopupMenu popupMenu = new PopupMenu(context, ancher);
//引入菜單資源
popupMenu.inflate(R.menu.menu_popup);

//設置選中
popupMenu.getMenu().findItem(checkedItemId).setChecked(true);
//菜單項的監聽
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.menu_setting_wifi:
checkedItemId = R.id.menu_setting_wifi;
Toast.makeText(context, "WIFI", Toast.LENGTH_SHORT).show();
break;

case R.id.menu_setting_gps:
checkedItemId = R.id.menu_setting_gps;
Toast.makeText(context, "GPS", Toast.LENGTH_SHORT).show();
break;

case R.id.menu_setting_userIcon:
Toast.makeText(context, "USER_ICON", Toast.LENGTH_SHORT).show();
break;
}
return true;
}
});

//使用反射,強制顯示菜單圖標
try {
Field field = popupMenu.getClass().getDeclaredField("mPopup");
field.setAccessible(true);
MenuPopupHelper mHelper = (MenuPopupHelper) field.get(popupMenu);
mHelper.setForceShowIcon(true);
} catch (IllegalAccessException | NoSuchFieldException e) {
e.printStackTrace();
}

//顯示PopupMenu
popupMenu.show();
}
}

㈤ 如何設置popupmenu的背景顏色

procere TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
with ACanvas do
begin
brush.Color:= clLime;
Pen.Color:= clRed;
FloodFill(1,1,clBLUE,fsBorder);
TextOut(0,0,'Hello,');
end;

㈥ 如何使用popupmenu控制項實現微信用戶界面

控制項實現微信用戶界面,代碼如下:
<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item>

<menu>

<item

android:id="@+id/charge"

android:showAsAction="ifRoom|withText"

android:icon="@drawable/tab_contacts_use"

android:title="@string/charge"

android:visible="true"/>

<item

android:id="@+id/changepassword"

android:showAsAction="ifRoom|withText"

android:icon="@drawable/tab_contacts_use"

android:title="@string/changepassword"

android:visible="true"/>

<item

android:id="@+id/getpassword"

android:showAsAction="ifRoom|withText"

android:icon="@drawable/tab_contacts_use"

android:title="@string/getpassword"

android:visible="true"/>

<item

android:id="@+id/money"

android:showAsAction="ifRoom|withText"

android:icon="@drawable/tab_contacts_use"

android:title="@string/money"

android:visible="true"/>

</menu>

</item>

</menu>

㈦ 如何從屏幕底部向上滑出一個view-Android開發問答

從屏幕底部向上滑出一個view的方式,主要是使用TranslateAnimation,這個類,可以綁定一個控制項,在y軸方向,滑出一段高度,如下代碼:

packagecom.txlong;

importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.View;
importandroid.view.animation.Animation;
importandroid.view.animation.AnimationUtils;
importandroid.view.animation.TranslateAnimation;
importandroid.widget.Button;
importandroid.widget.TextView;

{

privateAnimationmyAnimation_Translate;

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

finalTextViewtv=(TextView)findViewById(R.id.tv);
Buttonbtn=(Button)findViewById(R.id.btn);

btn.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
tv.setVisibility(View.VISIBLE);
myAnimation_Translate=newTranslateAnimation(
Animation.RELATIVE_TO_PARENT,-1,
Animation.RELATIVE_TO_PARENT,0,
Animation.RELATIVE_TO_PARENT,0,
Animation.RELATIVE_TO_PARENT,0);
myAnimation_Translate.setDuration(1000);
myAnimation_Translate.setInterpolator(AnimationUtils
.loadInterpolator(AndroidAnimationActivity.this,
android.R.anim.accelerate_decelerate_interpolator));
tv.startAnimation(myAnimation_Translate);
}
});
}
}

㈧ Android如何控制PopupMenu彈出菜單的寬度尺寸

通過設置popupMenu的xml布局文件,可以使用android:width,裡面設置合適的尺寸以適配手機型號,建議使用android:width=「wrap_content".
android 中尺寸的設置幾種形式,可以是wrap_content/fill_parent/還可以是具體的數值,不如13dp。

㈨ android中怎麼設置popupmenu的大小

通過設置popupMenu的xml布局文件,可以使用android:width,裡面設置合適的尺寸以適配手機型號,建議使用android:width=「wrap_content".
android
中尺寸的設置幾種形式,可以是wrap_content/fill_parent/還可以是具體的數值,不如13dp。

㈩ android微信的聊天記錄長按某聊天彈出的頁面是怎樣實現的

Android中應該是用ListView來實現聊天記錄的,長按某個記錄後,如果設置了偵聽器:
setOnItemLongClickListener(OnItemLongClickListener listener);
則listener中的方法: boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) 將被調用,你可以實現這個方法,在其中創建你想要的對話框。

全屏對話框可以這樣實現:
1 如果你請求activity去創建,則showDialog(YOUR_DIALOG_ID);
然後在activity中的
@OverrideprotectedDialog onCreateDialog(int id){//all other dialog stuff (which dialog to display)//this line is what you need:
dialog.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN,LayoutParams.FLAG_FULLSCREEN);return dialog;
}

2 如果直接創建,則調用:Dialog dialog=newDialog(this,R.style.Theme_Dark_NoTitleBar_FullScreen);

不知道有沒有說清楚。

熱點內容
雲物理伺服器物理伺服器 發布:2025-08-21 13:29:54 瀏覽:110
促銷升級源碼 發布:2025-08-21 13:20:39 瀏覽:68
各大資料庫 發布:2025-08-21 13:13:53 瀏覽:810
設計圖庫加密 發布:2025-08-21 13:06:38 瀏覽:515
索引存儲是數據的存儲方式么 發布:2025-08-21 13:05:31 瀏覽:506
我的世界大型伺服器ip大全 發布:2025-08-21 12:54:23 瀏覽:578
htcandroidl 發布:2025-08-21 12:50:59 瀏覽:963
編程拳皇 發布:2025-08-21 12:50:57 瀏覽:330
sqlserver2005作業 發布:2025-08-21 12:15:25 瀏覽:325
安卓手機怎麼設置側邊任務欄 發布:2025-08-21 12:11:10 瀏覽:774