0

Я использую MediaPlayer с этим XMLAndroid - не может изменить RelativeLayout ширина/высота динамически

<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/webView"> 

</WebView> 
<RelativeLayout 
     android:id="@+id/relativeL" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true"> 
    <SurfaceView 
     android:id="@+id/surfView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
</RelativeLayout> 

То, что я пытаюсь сделать, это изменить ширину/высоту relativeL (и поэтому игрок внутри он), когда я нажимаю клавишу

Я вызываю эту функцию при нажатии клавиши, но она не имеет никакого влияния, никаких ошибок, просто ничего не происходит. Эта функция работала отлично, прежде чем я добавил webview в свой xml. Как вы видите, веб-просмотр находится в фоновом режиме проигрывателя. Вот функция:

public static boolean makePlayerSmall(){ 
     RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(650, 400); 
     params1.setMargins(100, 120, 0, 0); 
     MainActivity.RL.setLayoutParams(params1); 
     MainActivity.RL.invalidate(); 
     return true; 
    } 

Также здесь мой OnCreate метод в MainActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setImmersiveFullScreen(); 
     setContentView(R.layout.activity_main); 
     RL = (RelativeLayout)findViewById(R.id.relativeL); 

     webView = (WebView)findViewById(R.id.webView); 
     assert webView != null; 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setAppCacheEnabled(false); 
     webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); 

     webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return false; 
      } 
     }); 

     webView.addJavascriptInterface(new MyJSInterface(this), "MyJSInterface"); 
     webView.loadUrl("http://85.118.98.251/misho_android/c/?debug&debug_key=4581f079f3629a2a78909251fb402a99&mac=00%3A1A%3A79%3A04%3A97%3A3E"); 

     //setup ui elements 
     vidSurface = (SurfaceView) findViewById(R.id.surfView); 
     vidHolder = vidSurface.getHolder(); 
     vidHolder.addCallback(this); 
    } 

Любая помощь будет принята с благодарностью, спасибо!

ответ

0

Я пытался так много вещей, и, наконец, он работает, запустив код в основном потоке (но я думал, он работает в основном потоке на первом месте). Сейчас я собираюсь немного изучить эту тему.

(new Handler(Looper.getMainLooper())).post(new Runnable() { 
        @Override 
        public void run() { 
         Player.makePlayerSmall(); 
        } 
       }); 
0
public static void replace(View target, ViewGroup.LayoutParams params) { 
    if (target == null) { 
     return; 
    } 
    final ViewParent viewParent = target.getParent(); 

    if (viewParent != null && viewParent instanceof ViewGroup) { 
     final ViewGroup parent = (ViewGroup) viewParent; 

     final int index = parent.indexOfChild(target); 
     parent.removeViewInLayout(target); 

     parent.addView(target, index, params); 

    } else { 
     throw new IllegalStateException("ViewStub must have a non-null ViewGroup viewParent"); 
    } 
} 

Попробуйте заменитель

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