Popupwindow在指定的x,y座標顯示
專案需求,要將SeekBar的值顯示有SeekBar上方的一個PopupWindow中,PopupWindow的位置要隨著SeekBar的滑塊變換。(之前發的程式碼經過幾次測試,發現不適應於大部分場景,現已經將SeekBar上顯示一個PopupWindow封閉成一個CustomView ,大家只要在xml中費用就可以,但是tips.xml一點要有哦)
直接上程式碼:(註釋很清楚)
ManaMySeekBar.java:(自定義的SeekBar)
<pre name="code" class="java">/** * 自定義seekbar * * */ public class ManaMySeekBar extends SeekBar { // 用來顯示彈窗text private PopupWindow mPopupWindow; private LayoutInflater mInflater; //顯示進度textview private View mView; //定義座標陣列 記錄當前x,y座標 private int[] mPosition; private TextView mTvProgress; public ManaMySeekBar(Context context, AttributeSet attrs) { super(context, attrs); //載入PopupWindow上顯示的佈局 mInflater = LayoutInflater.from(context); mView = mInflater.inflate(R.layout.tips, null); //佈局中的TextView 顯示seekBar的值 mTvProgress = (TextView) mView.findViewById(R.id.tv_popu_menu); mPopupWindow = new PopupWindow(mView); //設定PopupWindow的背景 mPopupWindow.setBackgroundDrawable(getResources().getDrawable( R.drawable.bg_charg)); mPosition = new int[2]; } //設定PopupWindow上顯示的內容 public void setSeekBarText(String str) { mTvProgress.setText(str); } //獲得內容 public String getstr() { return (String) mTvProgress.getText(); } //觸控事件處理 @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: this.getLocationOnScreen(mPosition); mPopupWindow.showAsDropDown(this, (int) event.getX(), mPosition[1] - (int) this.getY() - this.getHeight() - 30);// break; case MotionEvent.ACTION_UP: mPopupWindow.dismiss(); break; } return super.onTouchEvent(event); } //重寫OnDraw方法,更新PopupWindow的位置與顯示的值 @Override protected synchronized void onDraw(Canvas canvas) { int thumb_x = this.getProgress() * (this.getWidth() / this.getMax());//根據進度值設定PopupWindow顯示的位置 int middle = (int) this.getY() + this.getHeight(); super.onDraw(canvas); if (mPopupWindow != null) { try { this.getLocationOnScreen(mPosition); mPopupWindow.update(thumb_x - 10, middle, 120, 100);//更新PopupWindow的位置與顯示的值 setSeekBarText(String.valueOf(this.getProgress())); } catch (Exception e) { } } } }
在要費用控制元件的佈局檔案引入自定義的SeekBar:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <mystery.honey.edittextinsertimagespan.ManaMySeekBar android:id="@+id/sb_point" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/ll_body" android:layout_marginTop="220dp" /> </RelativeLayout>
還有就是 popupwindow裡的佈局檔案:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tv_popu_menu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:text="TextView" /> </LinearLayout>
最後看看效果圖吧:
相關推薦
Popupwindow在指定的x,y座標顯示
專案需求,要將SeekBar的值顯示有SeekBar上方的一個PopupWindow中,PopupWindow的位置要隨著SeekBar的滑塊變換。(之前發的程式碼經過幾次測試,發現不適應於大部分場景,現已經將SeekBar上顯示一個PopupWindow封閉成一個Cust
opencv之x, y座標和行列關係
opencv之x, y座標和行列關係 在opencv的影象座標系中,座標原點為左上角, x座標軸指向右方, y座標軸指向下方。 row == height == Point.y col == width == Point.x Mat::at(Point(x, y)) == Mat::at(y, x)
Excel轉Html(八)--POI-解析獲取合併單元格-按照X-Y座標解析-與handsontable資料展示/儲存一致
public static List<DmFormMergedDto> getMergedCells(Sheet sheet, int rowIndex, int cellIndex, Long formId) { &nbs
selenium直接用滑鼠點選(基於x,y座標)進行網頁爬取
食品生產許可獲證企業(SC)的爬取 只有名字和編號 這個網站是動態載入,並對請求ur進行了加密l 所以使用selenium 但是,selenium使用不知道為什麼一旦進行了對頁面資料的操作後,就無法請求到下一頁的資料了,所以只能一頁一頁的請求不停的從第一頁跳轉,不能
matlab中plot()畫圖時指定X,Y軸的範圍
可以用matlab提供的座標軸設定函式axis進行設定(對當前座標軸進行設定),具體用法如下:plot(x, y); // 畫圖後用axis函式設定座標軸的範圍axis([xmin xmax ymin ymax]); % 設定座標軸在指定的區間xmin、xmax 表示
javascript獲得DOM元素X,Y座標的函式
以下是YUI用的函式: isSafari = (document.childNodes && !document.all && !navigator.taintEnabled); var getXY = function(el) {
如何在arcgis下使shp檔案自動生成點的X.Y座標
在點shp檔案中,點的座標資訊保存於shp檔案的shape欄位中,而不能直接看到座標。 我們可以通過提取點的經緯度並保存於點shp檔案的屬性表X(或經度)、Y(或緯度)欄位中。方法如下: 1)
echarts x/y軸座標文字過長解決辦法-換行
/** * Created by HanSon on 2016/1/24. */ function newline(option, number, axis){ /* 此處注意你的json是陣列還是物件 */ option[axis][0][
點選事件獲取滑鼠座標位置(x,y)值
$(document).click( function(event){ event = event || window.event;
Android 自定義PopupWindow指定位置或給定View座標彈出
PopupWindowHelper是一個根據View的位置顯示PopupWindow的一個工具類、彈出PopupWindow的位置會根據指定的View出現的位置而動態改變、本Demo是用Android Studio開發的、分為兩個Module、但我個人更習慣合到
ArcGIS 10.2匯入X、Y座標(經度、緯度),生成Shapefile點資料
用過CASS的人都知道,野外數字測圖得到的點資料(平面座標)可以直接匯入到CASS中,進一步繪製地形圖。那麼,帶有座標的資料能不能在ArcGIS中實現點圖層的生成呢?答案是必須的! 本文以氣象臺站shp資料的生成為例,詳細介紹ArcGIS 10.2中
echarts x軸座標文字顯示不全
在echarts中應用柱狀圖或者折線圖時,當資料量過多的時候,X軸的座標就會顯示不全(如下圖圖一),在ECharts圖表元件內部有一個機制,用於統計xAxis座標刻度的個數和圖表寬度,從而會自動
使用jfreechart統計資料,生成折線圖(座標x,y值大小可以自己設定)
需求:一個目錄下包含多個txt檔案,每個txt檔案每行儲存一個數據,根據每個txt檔案的資料生成一個折線圖,y軸為每行的資料,x軸表示第幾行。 b.建立新的java工程時,依賴這2個jar包。 c.相關jfreechart介紹: org.jfree.chart.Char
python 使用matplotlib 實現從檔案中讀取x,y座標的視覺化
1. test.txt檔案,資料以逗號分割,第一個資料為x座標,第二個為y座標,資料如下:1.1,2 2.1,2 3.1,3 4.1,5 40,38 42,41 43,422. python部分程式碼#
MOD(x,y)
-- uri new nbsp span 精確 ont 除法 sql MOD(x,y) 返回 x 被 y 除後的余數,MOD(x,y) 對於帶有小數部分的數值也起作用,它返回除法運算後的精確余數 mysql> SELECT MOD(31,8), MOD(234,10
POWER(x,y)
select pan sql class style clas blog mysq log POWER(x,y) 用於返回 x 的 y 次方的結果 mysql> SELECT POWER(2,4), POWER(2,-4); +------------+---
Java 遞歸解決 "僅僅能兩數相乘的計算器計算x^y" 問題
args power ava auth mod 每次 一個數 rac pre /** * 求一個數的乘方 * 求x^y,y是一個正整數。設計算器僅僅能計算兩數相乘,不能一次計算n個數相乘。 * 知:2^5=(2^2)^2*2; 2^6=(2^2
css文本超過指定行數隱藏顯示省略號
hit 彈性 設置 str 簡單的 換行 而是 kit mil 最近在做微信小程序的時候,遇到了顯示指定行數並且顯示省略號的問題,做個記錄: css的樣式是: overflow:hidden; //超出的文本隱藏 //省略號樣式, // text-overflow參數值和解
X-Y Problem
文章 leader 所有 技術人 信息 log cor 地理 phone X-Y Problem 對於X-Y Problem的意思如下: 有人想解決問題X 他覺得Y可能是解決X問題的方法 但是他不知道Y應該怎麽做 於是他去問別人Y應該怎
python matplotlib在mac os x 中如何顯示中文,完美解決
新的 com sub ttf 一行 lan HR tar spa 一、 下載相關的中文字體 simhei 文件: 下載地址 二、通過以下代碼查找matplotlib的數據存放位置: import matplotlib print(matplotlib.matplotlib