国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

popupwindow中按鈕的點擊事件

2019-11-09 18:21:10
字體:
來源:轉載
供稿:網友
最近在做一個答題的小項目,其中運用到了popupwindow!也就是一個點擊滑出效果。當然還有一種方法是寫個動畫xml,不過在這里我就不提了。我今天要提的是,popupwindow中的題號按鈕與當前題號一致,有個顏色效果,當點擊popupwindow中的按鈕時,它當前題號按鈕的狀態會改變。廢話不多說了,直接上代碼!首先,看看我的布局xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_order_test" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.zking.administrator.在這個xml中,我用的是一個viewpager裝的題目,而后一個顯示當前題號與總題數的TextView,給textview設置點擊事件:

package com.zking.administrator.project;import android.content.ContentValues;import android.content.Intent;import android.database.Cursor;import android.database.sqlite.SQLiteDatabase;import android.graphics.Bitmap;import android.graphics.Color;import android.graphics.drawable.BitmapDrawable;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentStatePagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.GridLayout;import android.widget.PopupWindow;import android.widget.RelativeLayout;import android.widget.ScrollView;import android.widget.TextView;import android.widget.Toast;import com.zking.administrator.
application.MyApplication;import com.zking.administrator.entity.Dbhelper;import com.zking.administrator.entity.Questions;import com.zking.administrator.fragment.Fragment_orderTest;import java.util.ArrayList;import java.util.List;public class OrderTestActivity extends AppCompatActivity { private ViewPager viewpager_order; private List<Fragment_orderTest> fragment_orderTests=new ArrayList<>(); private SQLiteDatabase database; private Questions questions; private TextView frame_order_test_tv_count; private int _id; private int fid; private GridLayout gridLayout; private int gridindex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_order_test); frame_order_test_tv_count = (TextView) findViewById(R.id.frame_order_test_tv_count); viewpager_order = (ViewPager) findViewById(R.id.viewpager_order); //獲得當前page下標加一作為進入練習的第一題 int x=viewpager_order.getCurrentItem(); int y=x+1; //連接數據庫 Dbhelper dbhelper=new Dbhelper(this,"jszks2017.db",null,1); //讀取數據 database = dbhelper.getReadableDatabase(); //執行sql語句 final Cursor cursor=database.rawQuery("select * from question",null); //給textView設置最大數據個數 frame_order_test_tv_count.setText(y+"/"+cursor.getCount()); //給frame_order_test_tv_count設置彈出PopupWindow frame_order_test_tv_count.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //在當前activity中添加一個布局ScrollView final ScrollView ScrollView=new ScrollView(OrderTestActivity.this); //該布局中設置一個內部布局GridLayout gridLayout = new GridLayout(OrderTestActivity.this); //設置每行顯示7個數據 gridLayout.setColumnCount(7); gridLayout.setBackgroundColor(Color.WHITE); //遍歷出數據庫中題目的個數 for (int i =1; i <=cursor.getCount() ; i++) { //設置Button布局 Button bu=new Button(OrderTestActivity.this); //給button設置值 bu.setText(i+""); final int finalJ = i; //getCurrentItem是該題當前的題號,是從0開始計算,而i是從1,所以要-1才能對應題目 if (viewpager_order.getCurrentItem()==i-1){ bu.setBackgroundColor(Color.YELLOW); } //給button設置點擊事件 bu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //jumpViewParger(null, finalJ-1); view.setBackgroundColor(Color.YELLOW); jumpViewParger(null, finalJ-1); View vn= gridLayout.getChildAt(gridindex); vn.setBackgroundColor(Color.parseColor("#FFF4F2F2")); gridindex=finalJ-1; } }); gridLayout.addView(bu); } //給ScrollView添加布局 ScrollView.addView(gridLayout); //實例化一個popupWindow PopupWindow mPopupWindow1 = new PopupWindow(ScrollView, 1200, 500, true); //可觸摸關閉 mPopupWindow1.setTouchable(true); //觸摸外部關閉 mPopupWindow1.setOutsideTouchable(true); //設置背景 mPopupWindow1.setBackgroundDrawable(new BitmapDrawable(getResources(), (Bitmap) null)); mPopupWindow1.showAsDropDown(v,0,0); } }); tv_order_test_titleTop.setText("第 "+y+" 題"); //判斷是否有下一個,遍歷所有 while(cursor.moveToNext()){ questions = new Questions(); questions.set_id(cursor.getInt(cursor.getColumnIndex("_id"))); questions.setQuestion(cursor.getString(cursor.getColumnIndex("question"))); questions.setItem1(cursor.getString(cursor.getColumnIndex("item1"))); questions.setItem2(cursor.getString(cursor.getColumnIndex("item2"))); questions.setItem3(cursor.getString(cursor.getColumnIndex("item3"))); questions.setItem4(cursor.getString(cursor.getColumnIndex("item4"))); questions.setExplain(cursor.getString(cursor.getColumnIndex("explain"))); fragment_orderTests.add(new Fragment_orderTest(questions)); } fid = MyApplication.fid; //給viewpager設置頁面轉換監聽 viewpager_order.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { int x=position+1; //給textView設置值 frame_order_test_tv_count.setText(x+"/"+cursor.getCount()); tv_order_test_titleTop.setText("第 "+x+" 題"); questions.get_id(); } @Override public void onPageScrollStateChanged(int state) {//012 if(state==2){ if(fid ==1){ tv_favourite_photo.setBackgroundResource(R.drawable.bt_unstar); } if(fid ==0){ tv_favourite_photo.setBackgroundResource(R.drawable.bt_star); } } } }); //給viewPager設置適配器 viewpager_order.setAdapter(new MyAdapter(getSupportFragmentManager())); } class MyAdapter extends FragmentStatePagerAdapter{ public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragment_orderTests.get(position); } @Override public int getCount() { return fragment_orderTests.size(); } } public void jumpViewParger(View view,int i){ viewpager_order.setCurrentItem(i); }}

綁定數據也一起在這里了。它還牽扯了一個class,question.class

package com.zking.administrator.entity;import android.database.Cursor;public class Questions { private int _id; private String question; private String item1; private String item2; private String item3; private String item4; private String image; private int answer; private String explain; private int favourite; private int qerror; private int count; public Questions() { } public int getFavourite() { return favourite; } public void setFavourite(int favourite) { this.favourite = favourite; } public int getQerror() { return qerror; } public void setQerror(int qerror) { this.qerror = qerror; } public String getExplain() { return explain; } public void setExplain(String explain) { this.explain = explain; } public int getAnswer() { return answer; } public void setAnswer(int answer) { this.answer = answer; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public String getQuestion() { return question; } public void setQuestion(String question) { this.question = question; } public int get_id() { return _id; } public void set_id(int _id) { this._id = _id; } public String getItem1() { return item1; } public void setItem1(String item1) { this.item1 = item1; } public String getItem2() { return item2; } public void setItem2(String item2) { this.item2 = item2; } public String getItem3() { return item3; } public void setItem3(String item3) { this.item3 = item3; } public String getItem4() { return item4; } public void setItem4(String item4) { this.item4 = item4; }}

這就是我這次弄出的一個小功能,不過,有個bug,就是你在點擊popupwindow中的按鈕時,不退出popupwindow,再繼續點擊按鈕,它最開始的那個按鈕的狀態還在,最好的是,在整個popupwindow 只會有兩個按鈕有狀態:一個是上一次的題號,一個是當前的題號。這個問題還一直困擾著我,如果有大神弄出了,望能指教一下,謝謝!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永年县| 云和县| 新泰市| 沁源县| 灵宝市| 腾冲县| 扶风县| 枣强县| 将乐县| 垫江县| 吉林省| 准格尔旗| 泗洪县| 遂宁市| 团风县| 四川省| 密山市| 栾川县| 射洪县| 灵台县| 类乌齐县| 长海县| 巴青县| 峨眉山市| 溧阳市| 天祝| 澳门| 巴南区| 渑池县| 巴中市| 墨竹工卡县| 沽源县| 彰化市| 田东县| 江川县| 馆陶县| 安乡县| 江孜县| 巴中市| 江安县| 寿光市|