2013-08-19 40 views
1

我是新来的Android &这个优秀的问题/答案的网站..安卓:线性布局之间的水平差距

目前我面临的一个问题,内用线性布局之间间隙/空间。

我有多个线性布局嵌套(线性布局 - >滚动视图布局 - >多个线性布局)。

我的目标是显示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); 

希望这explaines我的问题。提前致谢。

问候 Nayeem

+0

你想显示整个屏幕上4个图标? –

回答

0

你试图改变重力顶部?

android:layout_gravity="top" 
+0

是的,我试过android:layout_gravity =“top”但仍然没有用... – nayeem

+0

在你的代码中试试这个: 'LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(leftLLWidth,iHeight); LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(rightLLWidth,iHeight); params.gravity = Gravity.TOP; params.topMargin = 0; params2.gravity = Gravity.TOP; params2.topMargin = 0; leftLL.setLayoutParams(params); rightLL.setLayoutParams(params2);' – Dyna

+0

感谢Dyna,我试过上面提到的代码... insted的减少空间它增加了空间...... :( – nayeem

0

在你父母的线性布局,你已经把宽度

android:layout_width="0dip" 

这是不正确的

+0

是的,因为布局显示动态,所以最初我固定为0dip宽度和代码我是变化的。 – nayeem