0

Ich bin mit Mediaplayer mit diesem xmlAndroid - nicht RelativeLayout Breite/Höhe ändern sich dynamisch

<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> 

Was ich versuche zu tun, die Breite ändern/Höhe relativeL (und so der Spieler im Inneren es) wenn ich eine Taste drücke

Ich rufe diese Funktion auf Tastendruck, aber es hat keine Auswirkungen, keine Fehler, nur nichts passiert. Diese Funktion funktionierte einwandfrei, bevor ich eine Webansicht in mein XML-Dokument einfügte. Wie Sie sehen können, befindet sich das Webview im Hintergrund des Players. Hier ist die Funktion:

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; 
    } 

Auch hier ist meine onCreate Methode in 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); 
    } 

Jede Hilfe wird sehr geschätzt, danke!

Antwort

0

ich so viele Dinge ausprobiert und es funktioniert schließlich durch den Code in Haupt-Thread ausgeführt wird (aber ich dachte, es wurde im Hauptthread in erster Linie ausgeführt wird). Ich werde jetzt ein wenig über dieses Thema recherchieren.

(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"); 
    } 
} 

Versuchen Sie, diese replacer

Verwandte Themen