相对于其他元素(不是RelativeLayout)放置东西

时间:2013-06-20 14:33:26

标签: c# android xamarin.android

是否可以通过使用例如另一个元素值的百分比来设置高度,宽度和边距等值。例如,将一个元素的宽度设置为另一个元素的宽度。

我不会在编程时或在axml代码中烦恼。

目前我一直试图以编程方式执行此操作:

protected override void OnCreate (Bundle bundle)
{
    base.OnCreate (bundle);

    var metrics = Resources.DisplayMetrics;
    var widthInDp = ConvertPixelsToDp(metrics.WidthPixels);
    var heightInDp = ConvertPixelsToDp(metrics.HeightPixels);

    SetContentView (Resource.Layout.Main);

                //Set title width as 98% of total width
    ImageView title_img = FindViewById<ImageView> (Resource.Id.apptitle);
    LinearLayout baseparent = FindViewById<LinearLayout> (Resource.Id.baselayout);
    title_img.LayoutParameters.Width = (baseparent.Width / 100) * 98 ;
               //Set welcome width as half of title width
    ImageView welcome_img = FindViewById<ImageView> (Resource.Id.welcome);
    welcome_img.LayoutParameters.Width = title_img.Width/2;
}


private int ConvertPixelsToDp(float pixelValue)
{
    var dp = (int) ((pixelValue)/Resources.DisplayMetrics.Density);
    return dp;
}

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是在线性布局中使用android:layout_weight参数。例如,要使一个元素的大小是第二个元素的两倍,您可以这样做:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout android:background="#FF0000"
        android:layout_height="fill_parent" android:layout_width="fill_parent"
        android:layout_weight="2" />
    <LinearLayout android:background="#00FF00"
        android:layout_height="fill_parent" android:layout_width="fill_parent"
        android:layout_weight="1" />
</LinearLayout>

article here上可以找到更多相关内容。