1. 程式人生 > >android 解決vedeoView設定高度無效的問題

android 解決vedeoView設定高度無效的問題

在android中,是不允許給VideoView自行設定高度的,寬度是可以的,所以只能通過自定VideoView來設定高度,具體步驟如下:

1.在專案的values資料夾下建立檔案attrs.xml,在裡面新增如下內容:

<span style="font-size:24px;"><strong><resources>

    <!-- VideoView的相關屬性 -->
    <declare-styleable name="MyVideoView">
        <attr name="videoView_width" format="dimension"/>
        <attr name="videoView_height" format="dimension"/>
    </declare-styleable>
</resources></strong></span>

2.在佈局檔案中新增改自定義元件:

<RelativeLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">
            <com.view.MyVideoView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/vv_camera_player"
                app:videoView_width="120dp"
                app:videoView_height="180dp"/>
        </RelativeLayout>
3.定義一個類繼承自VideoView,在onMeasure中進行高度設定:
<strong style="font-size:24px;">public class MyVideoView extends VideoView {

    TypedArray typedArray ;
    private int viewWidth ;
    private int viewHeight ;

    public HoloVideoView(Context context) {
        this(context,null);
    }

    public HoloVideoView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    public HoloVideoView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        typedArray = context.obtainStyledAttributes(attrs, R.styleable.MyVideoView);
        viewWidth = typedArray.getDimensionPixelSize(R.styleable.</strong><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">MyVideoView</span><span style="font-size:18px; font-family: Arial, Helvetica, sans-serif;">_videoView_width, 0) ;</span><strong style="font-size:18px;">
<span style="font-size:18px;">          </span><span style="font-size:24px;">viewHeight = typedArray.getDimensionPixelSize(R.styleable.</span></strong><span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size:24px;">MyVideoView</span></span><strong><span style="font-size:24px;">_videoView_height,0) ;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(viewWidth, viewHeight);
    }

}</span></strong>
4.最後在Activity中使用正常的VideoView一樣使用即可,視訊檔案放在raw目錄下,播放視訊檔案程式碼如下:
String path = "android.resource://"+  getPackageName() + "/raw/guide_video" ;
				if (path!=null) {
					Uri uri = Uri.parse(path);
					vvCamera.setMediaController(new MediaController(this));
					vvCamera.setVideoURI(uri);
					vvCamera.start();
				}




相關推薦

android 解決vedeoView設定高度無效的問題

在android中,是不允許給VideoView自行設定高度的,寬度是可以的,所以只能通過自定VideoView來設定高度,具體步驟如下: 1.在專案的values資料夾下建立檔案attrs.xml,

android解決Viewpager設定高度為wrap_content無效的方法

今天發現設定viewpager高度為wrap_content時並沒作用,stackoverflow給出瞭解決方案,就是自定義viewpager,重寫onMesure()方法: public class WrapContentHeightViewPager extends

Android CheckBox中設定padding無效問題解決方法

CheckBox使用本地圖片資源 CheckBox是Android中用的比較多的一個控制元件,不過它自帶的button樣式比較醜,通常都會替換成本地的資源圖片。使用本地資源圖片很簡單,設定android:button屬性為一個自定義的包含selector的dr

PopupWindow設定高度無效,一直全屏

本文僅記錄專案所遇問題 原因:佈局問題 1、原佈局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/

Android設定ListView的item高度無效--解決方案

原文地址:https://blog.csdn.net/zhonglinliu/article/details/54580622   問題:      ListView的使用中,item是在adapter中用來顯示每一個小條目的資

解決Android系統中CSS設定select高度無效的BUG

在CSS中使用height和line-height設定select的高度,在有的Android版本系統中是無效的,可以通過新增"-webkit-appearance: listbox;"屬性解決這個BUG,完整例項程式碼如下(2.3.3,4.0,4.2系統已測試可行): s

解決Android中給Button設定Padding無效的問題

在Xml中給Button設定padding = 0 和用程式碼給Button設定padding = 0 都無效,是因為,這種情況下,Button的寬高是受TextView中的變數:mMinWidth , mMinHeight和View中的變數:mMinWidth

Android 自定義 Dialog 佈局設定高度 wrap_content 無效

以前的一個 Dialog 的自定義佈局的根佈局的寬度是寫死的,高度是 wrap_content 的。後來加了幾行內容後,發現內容總是顯示不全,高度沒有自適應,似乎變成了一個固定高度。根佈局是一個垂直的 LinearLayout,之前的內容比較少,所以沒發現問題。這期在底部添加

Android GridView之新增分隔線,動態設定高度,實現高度自適應,並解決第一個item不顯示的問題

最近做一個專案時遇到一點問題,在這裡分享一下解決思路。 首先看效果圖: 這裡的需求是實現介面中的六個圖示,博主後來和同事討論過這個問題,用 GridView 實現費時費力好嘛,同事認為做6個 Button 就 好了,可能博主就愛鑽牛角尖吧,一開始認為怎麼辦只要還有辦法那就

android 關於listview item設定高度的問題解決方法

關於listview,做andriod開發都必須知道的,我寫了一個簡單的adapter,在這不考慮什麼快取機制就單單為了顯示一下而已: public class MainActivity extends Activity { private static final

CSS漸變色邊框,解決border設定漸變後,border-radius無效的問題

需求:用css設定漸變邊框 通過border-image來實現漸變色邊框 <div class="content"></div> .content { width: 100px; height: 100px; border:10px

Android Dialog 設定圓角無效

這兩天有一個需求:設定dialog圓角,寫完後發現並沒有達到效果,以前也碰到這個問題,這裡記錄下解決方案,便於查閱。也有百度去查詢原因,卻沒有發現合適的解答,當然更可能是我沒找到,還是自己解決吧。 Dialog與DialogFragment 解決方案一致:只要設定背景透明解決問題了。 &

Android中TextView居中顯示無效的原因和解決方案。

今天在寫程式碼的時候,出現一個Bug,最後解決了,現在記錄下。 自定義了一個佈局控制元件,用於PopupWindow提示郵箱型別,結果顯示的郵箱型別無法居中,剛開始的效果如圖所示: 上面所貼圖片沒有經過處理,其中“@126.com”的文字在白色背景中沒有居中。注:白色

PHP設定cookie無效問題原因以及解決方案

在某個頁面中使用setcookie來設定cookie,例如 setcookie("id",$id, time()+36002430); 但是回到首頁之後發現沒有生效,用javascript:alert(document.cookie)裡面為空,PHP裡面的$_COOKIE

表格單元格td設定寬度無效解決辦法

<!--如果這樣設定無效,--> <td width="120">123456789000000000000</td> <!--那麼套個div再設定寬度就有效了。--> <td><div style="width: 60px;ov

【轉載】Windows10用fiddler抓包Android應用(解決手機設定代理後無法上網,設定只抓app包)

1、環境準備 1、電腦上安裝fiddler 2、手機和電腦在同一個區域網內 2、設定 1.fiddler>Tools>Fiddler Options>

Android 啟動頁設定app icon 解決開始啟動黑屏

1.主題設定 <activity android:name=".xx.SplashActivity" android:screenOrientation="portrait" android:theme="@style/LauncherThem

Element table 列設定 百分之無效 問題所在與解決

需求:如題,設定列寬為百分比。 問題:百分比之後列都擠在了一起。 解決:將 el-table-column 的 width 屬性改成 min-width。 猜想:width 百分之繼承的父級值不正確。 原因:圖中對比,el-table 自己的元件會被 vue 解析成 html,通

用jQuery的attr()設定option預設選中無效解決 attr設定屬性失效

表單下拉選項使用selected設定,發現第一次預設選中成功,在頁面不重新整理的情況下,再次下拉,selected屬性設定了,預設選中不生效  在手機端有些瀏覽器用jQuery的attr()方法設定selected無效。 研究發現是瀏覽器相容的問題 一,解決瀏覽器快

Table中的td,th用了Colspan或者Rowspan之後,設定寬度無效解決方法

最近用到td中的Colspan,後來設定寬度的時候發現怎麼搞都無法實現到自己想要的效果,最後就把table中的第一行設定為無colspan和rowspan屬性的,該是幾列就幾列,然後把每列寬度設好,用百分比哦,我這裡用