2016-01-19 4 views
1

У меня есть класс MtxVideoView, который содержит textview и surfaceview. Класс MtxVideoView расширяет FrameLayout. Я хочу изменить размер MtxVideoView. Как это можно сделать?Как изменить размер представления, который расширяет FrameLayout

После кода специального зрения

public class MtxVideoView extends FrameLayout implements SurfaceHolder.Callback, MediaPlayer.OnPreparedListener, 
        VideoControllerView.MediaPlayerControl, MediaPlayer.OnErrorListener { 
private Context mContext; 
private SurfaceHolder mSurfaceHolder; 
private SurfaceView mSurfaceView; 
private MediaPlayer mPlayer; 
private VideoControllerView controller; 
private TextView mMessage; 
private boolean mbSrcAvailable = false; 
private boolean mbSurfaceCreated = false; 
private String mSource = ""; 
private String mUserName = ""; 
private String mPassword = ""; 
private boolean mbFullscreen = false; 
private FullScreenListener mFullScreenListener; 
private int mCount = 0; 

static interface FullScreenListener { 
    void onFullScreen(View view, boolean bFullScreen); 
} 

public void setFullScreenListener(FullScreenListener listener){ 
    mFullScreenListener = listener; 
} 

public MtxVideoView(Context context) { 
    super(context); 
    mContext = context; 
    mbFullscreen = false; 
    Init(); 
} 

public MtxVideoView(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    mContext = context; 
    Init(); 
} 

public MtxVideoView(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    mContext = context; 
    Init(); 
} 

private void Init(){ 
    mSurfaceView = new SurfaceView(mContext); 
    mSurfaceView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); 
    addView(mSurfaceView); 

    mMessage = new TextView(mContext); 
    mMessage.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT)); 
    mMessage.setGravity(Gravity.CENTER); 
    mMessage.setTextColor(Color.WHITE); 
    this.addView(mMessage); 

    mSurfaceHolder = mSurfaceView.getHolder(); 
    mSurfaceHolder.addCallback(this); 
} 
} 
+1

Что такое SpecialView, вы можете написать код для этого SpecialView? – sector11

+1

override 'onMeasure' Очень хорошее объяснение здесь http://stackoverflow.com/questions/12266899/onmeasure-custom-view-explanation – aelimill

ответ

0

Попробуйте этот код. Но вы должны запустить его, когда представление уже измерено.

{ 
    LayoutParams param = getLayoutParams(); 
    param.width = 100; 
    param.height = 200; 
    requestLayout(); 
} 
0

При определении в xml используйте layout_width и layout_hight.

Если вы добавляете динамически, то задайте параметры макета или добавьте это представление с параметрами макета в родительский.

Смежные вопросы