0

をRelativeLayout幅/高さを変更することはできません私は私は何をしようとしていることrelativeLの幅/高さを変更(およびその内部のプレイヤーであるこのXMLアンドロイド - 動的

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

でのMediaPlayerを使用しています私がキーを押したときに)

私はkeypressでこの関数を呼び出していますが、何の影響もなく、エラーもなく、何も起こっていません。私のXMLにwebviewを追加する前に、この関数はうまくいきました。ご覧のとおり、webviewはプレーヤーのバックラウンドにあります。ここでは関数は次のとおりです。

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

また、ここでされているすべてのヘルプは大歓迎されます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); 
    } 

の私のonCreateメソッドは、ありがとう!

答えて

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

この代用

関連する問題