Android:线性布局之间的水平差距

时间:2013-08-19 11:07:20

标签: android imageview android-linearlayout

我不熟悉Android&这个优秀的问题/答案网站..

目前我正面临内线性布局间隙/空间的问题。

我有多个嵌套的线性布局(线性布局 - > scrollview布局 - >多个线性布局)。

我的目标是显示ImageView(带图像)大小,以根据设备屏幕分辨率动态更改。

每个内部布局都有ImageView控件。我写道,在运行时调整每个ImageView的大小以适应屏幕。在设计时,内部线性布局显示没有水平间隙,但在朗姆酒时间由于动态代码,它们是线性布局之间的差距。

Design display
 ____________   ____________
|            | |            |
|            | |            | 
|  ICON - 1  | | ICON - 2   |
|            | |            | 
 ____________   ____________
    NO horizontal space
 ____________   ____________
|            | |            |
|            | |            | 
|  ICON - 3  | | ICON - 4   |
|            | |            | 
 ____________   ____________


Runtime display
 ____________   ____________
|            | |            |
|            | |            | 
|  ICON - 1  | | ICON - 2   |
|            | |            | 
 ____________   ____________
  un wanted horizontal space
 ____________   ____________
|            | |            |
|            | |            | 
|  ICON - 3  | | ICON - 4   |
|            | |            | 
 ____________   ____________

main.xml代码

    <LinearLayout
    android:background="@drawable/llrightborder"
    android:id="@+id/mainlayoutLeft"
    android:layout_width="0dip"
    android:layout_height="match_parent"
    android:layout_weight="2"
    android:orientation="vertical" >

    <ScrollView android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="wrap_content">
        <LinearLayout android:orientation="vertical" android:paddingTop="10.0dip" android:layout_width="fill_parent" android:layout_height="fill_parent"  android:layout_marginBottom="2dip">            

            <LinearLayout
                android:id="@+id/leftRow1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center" >

                <ImageView
                    android:id="@+id/imageicon1"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon1"
                    android:layout_marginRight="2dip"
                    android:clickable="true" />

                <ImageView
                    android:id="@+id/imageicon2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon2" 
                    android:layout_marginLeft="2dip"
                    android:clickable="true" />

            </LinearLayout>


            <LinearLayout android:id="@+id/leftRow2" android:layout_gravity="center" android:layout_width="wrap_content" android:layout_height="wrap_content">
                <ImageView
                    android:id="@+id/imageicon3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon3"
                    android:layout_marginRight="2dip"
                    android:clickable="true" />

                <ImageView
                    android:id="@+id/imageicon4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/icon4"
                    android:layout_marginLeft="2dip"
                    android:clickable="true" />
            </LinearLayout>                      


        </LinearLayout>
    </ScrollView>
</LinearLayout>

用于动态显示图像大小的main.java代码

DisplayMetrics metrics = getResources().getDisplayMetrics();

    iHeight = metrics.heightPixels; 
    iWidth = metrics.widthPixels;

    leftLLWidth = (int) ((iWidth * 25) / 100);
    rightLLWidth = (int) (iWidth - leftLLWidth);


    leftLL = (LinearLayout) findViewById(R.id.mainlayoutLeft);
    rightLL = (LinearLayout) findViewById(R.id.mainlayoutRight);


    leftLL.setLayoutParams(new LinearLayout.LayoutParams(leftLLWidth, iHeight));
    rightLL.setLayoutParams(new LinearLayout.LayoutParams(rightLLWidth, iHeight));

    //init image buttons
    img_icon1 = (ImageView) findViewById(R.id.imageicon1);
    img_icon2 = (ImageView) findViewById(R.id.imageicon2);
    img_icon3 = (ImageView) findViewById(R.id.imageicon3);
    img_icon4 = (ImageView) findViewById(R.id.imageicon4);

    btnWidth = (int) ((leftLLWidth / 2) - 3);
    btnHeight = btnWidth + 60;


    ViewGroup.LayoutParams button_params = img_icon1.getLayoutParams();

    button_params.width = btnWidth;
    button_params.height = btnHeight;

    img_icon1.setLayoutParams(button_params);
    //img_icon1.setOnClickListener(onMainImgClickHandler);


    img_icon2.setLayoutParams(button_params);
    img_icon3.setLayoutParams(button_params);
    img_icon4.setLayoutParams(button_params);   

希望这能解释我的问题。在此先感谢。

此致 Nayeem

2 个答案:

答案 0 :(得分:0)

你有没有试过将引力改为顶部?

android:layout_gravity="top"

答案 1 :(得分:0)

在您的父线性布局中,您已放置宽度

android:layout_width="0dip"

哪个不对