LayoutParams使用AddRules

时间:2015-11-06 08:04:58

标签: java android webview relativelayout

我知道有相关问题,但请尝试我的代码第1次

我认为我的代码是正确的,但我不知道为什么我不能得到我想要的

我正在尝试将图像替换为具有相同LayoutParams维度和位置(以编程方式)的RelativeLayout,然后在RelativeLayout内部将WebView置于其中心。 它差不多完成但是我在安装Webview时遇到了麻烦。 看下面的图片

activity_main.java

@Override
protected void onCreate(Bundle savedInstanceState) {
.........
    // Image
    ImageView image = (ImageView)findViewById(R.id.image);
    // Container of the image
    RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl_imageView);
    loader(rl , image);
}
public void loader(RelativeLayout rl,View view){
    // Creating RelativeLayout
    RelativeLayout rlnew = new RelativeLayout(this);
    // Getting the Layout Parameters of the image such as (position and dimension)
    RelativeLayout.LayoutParams lp1 = (RelativeLayout.LayoutParams) view.getLayoutParams();
    // Coloring the background of the new Relative Layout into blue
    rlnew.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
    // passing the parameters to the new relative layout from the image
    rlnew.setLayoutParams(lp1);

    // image turns into invisible
    view.setVisibility(View.INVISIBLE);

    // Creating a webView
    WebView webView = new WebView(this);
    // load the loading.gif
    webView.loadDataWithBaseURL("file:///android_asset/", "<center><img src='loading.gif' style=''/></center>", "text/html", "utf-8", null);
    // setting up dimension(height and weight) for the webview
    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(100, 60);        
    // adding position(Center) for the webview
    lp.addRule(RelativeLayout.CENTER_IN_PARENT);
    // setting up Layout parameters for the webiview
    webView.setLayoutParams(lp);
    // adding the webview to the new Relative Layout
    rlnew.addView(webView);
    // adding the new relative layout into the container
    rl.addView(rlnew);
}

activity_main xml

<RelativeLayout
    android:layout_width="250dp"
    android:layout_height="100dp"
    android:background="#ec0c0c"
    android:id="@+id/rl_imageView"
    android:layout_marginTop="47dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true">

     <!--Desired Output-->
    <!--<RelativeLayout-->
    <!--android:layout_width="70dp"-->
    <!--android:layout_height="70dp"-->
    <!--android:background="#010e6e"-->
    <!--android:layout_alignParentTop="true"-->
    <!--android:layout_alignParentEnd="true">-->
        <!--<WebView-->
        <!--android:layout_width="60dp"-->
        <!--android:layout_height="30dp"-->
        <!--android:id="@+id/imageView"-->
        <!--android:layout_centerVertical="true"-->
        <!--android:layout_centerHorizontal="true" />-->
    <!--</RelativeLayout>-->

     <!--Default Image-->
    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/sample1"
        android:id="@+id/image"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true">
    </ImageView>

</RelativeLayout>

Output Images

我正在制作一个方法,要求两个参数一个RelativeLayout(包含方法的第二个参数)和View,所以它可以是任何像(Image,TextView,RelativeLayout等)。

此代码可以替换特定的View,如relativeLayout或textView或Image 并将其替换为具有给定View相同大小和位置的relativeLayout(我的是图像)(如果您将该图像移动到给定容器中的任何位置,则代码将代替将图像替换为relativeLayout,无论它在何处与给定容器一样长。

唯一的问题是WebView的位置。 。为什么webView在那里?我想把它放在新的RelativeLayout

的中心

有人可以告诉我哪里出错了 如果您有其他方式只需提交答案

1 个答案:

答案 0 :(得分:0)

您的代码是正确的,但您的xml不是。尝试更改下面的xml并再次测试:

<ImageView
        android:layout_width="your dimen in dp < rl_imageView. width"
        android:layout_height="your dimen in dp < rl_imageView. height"
        android:src="@drawable/sample1"
        android:id="@+id/image"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true">
    </ImageView>

P / S:我建议以编程方式创建此Imageview