目錄
效果圖:
1.簡單實現一個PoupWindow
例子:
新建一個包,命名爲PoupWindow
新建一個Empty Activity,命名爲PoupWindowActivity:
在activity_main佈局文件設置一個按鈕跳轉到PoupWindowActivity,這個活動:
然後再MainActivity,獲取按鈕控件實體,並綁定監聽器:
打開activity_poup_window的佈局文件,添加一個按鈕:
在PoupWindowActivity,獲取控件實體,並綁定監聽器:
新建一個佈局文件爲這個PoupWindow提供子佈局:
命名爲:layout_poupwindow
設置一個列表:
代碼如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/TextView_goodId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textColor="@color/colorPrimaryDark"
android:text="很好"
android:gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/colorGrid"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/colorGrid"/>
<TextView
android:id="@+id/TextView_sosoId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textColor="@color/colorPrimaryDark"
android:text="一般"
android:gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/colorGrid"/>
<TextView
android:id="@+id/TextView_badId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp"
android:textColor="@color/colorPrimaryDark"
android:text="糟糕"
android:gravity="center_horizontal"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"/>
</LinearLayout>
回到PoupWindowActivity:
現在就可以運行程序了:
2.爲PoupWindow設置監聽事件
同樣也是可以爲這個PoupWindow的很好、一般、糟糕設置監聽事件:
整體代碼:
package com.example.yuan.e06_gridview.PoupWindow;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;
import com.example.yuan.e05_listview.R;
import com.example.yuan.e06_gridview.util.ToastUtil;
public class PoupWindowActivity extends AppCompatActivity {
//聲明引用
private Button mPWButton;
private PopupWindow mPoup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_poup_window);
//獲取控件實體
mPWButton = (Button) findViewById(R.id.PoupWindow_Id1);
// PoupWindowListener listener =new PoupWindowListener();
// mPWButton.setOnClickListener(listener);
//設置點擊事件
mPWButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() == R.id.PoupWindow_Id1){
//把layout_popwindow佈局引薦引入到這個Activity
View view = getLayoutInflater().inflate(R.layout.layout_popwindow,null);
//設置PoupWindow的佈局、寬度和按鈕一致和高度包含內容
//獲取控件對象
TextView goodtextView = (TextView) view.findViewById(R.id.TextView_goodId);
TextView sosotextView = (TextView) view.findViewById(R.id.TextView_sosoId);
TextView badtextView = (TextView) view.findViewById(R.id.TextView_badId);
goodtextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.showMsg(getApplicationContext(),"很好");
}
});
sosotextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.showMsg(getApplicationContext(),"一般");
}
});
badtextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtil.showMsg(getApplicationContext(),"糟糕");
}
});
mPoup = new PopupWindow(view,mPWButton.getWidth(), ViewGroup.LayoutParams.WRAP_CONTENT);
//點擊外部的時候可以收回
mPoup.setOutsideTouchable(true);
//按鍵按一下收回,再按一次彈出
mPoup.setFocusable(true);
//顯示在按鈕的下面
mPoup.showAsDropDown(mPWButton);
}
}
});
}
}
3.爲PoupWindow實則按壓效果
順便再設置一下點擊效果吧:
新建一個drawable文件,根佈局爲selector:
然後回到layout_poupwindow設置TextView控件佈局文件的背景色:
再次運行程序,現在就擁有了點擊事件和按壓效果了: