2012-09-11 74 views
0

我看到一些關於「ImageView」的問題,但我需要一個FrameLayout如何在寬度中設置FrameLayout fill_parent並始終在高度上具有固定比例?

我有一個FrameLayout,我需要它的width:height = 2:1,寬度是fill_parent。框架佈局中有許多圖像視圖,我可以將它們設置爲width=fill_parentheight=fill_parent

我沒有找到辦法做到這一點,請幫助。

我的XML代碼:

<FrameLayout 
     android:id="@+id/cardView" 
     android:layout_width="fill_parent" android:layout_height="fill_parent" 
     android:layout_centerInParent="true"> 
    <ImageView 
      android:id="@+id/frameView" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:scaleType="fitXY" 
      android:src="@drawable/card_style1" 
      /> 
</FrameLayout> 
+0

在代碼中它很容易,從那裏你得到的'onCreate'方法發表'Runnable' 'FrameLayout'的寬度,並根據計算出的值計算和設置高度。直接在xml佈局中沒有辦法做到這一點。 – Luksprog

+0

@Luksprog,你能舉個例子嗎?嘗試之後,我沒有找到如何去做。 – Freewind

回答

1

看看這是你想要什麼:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.your_layout); 
    final FrameLayout target = (FrameLayout) findViewById(R.id.frame_id); 
    target.post(new Runnable() { 

     @Override 
     public void run() {    
      int width = target.getWidth(); 
      int height = width/2;     
      LayoutParams lp = target.getLayoutParams(); 
      lp.height = height; 
      target.setLayoutParams(lp); 
     } 

    }); 
} 
+0

奇怪的是'target.getWidth()'總是返回0?我只是更新我的問題來添加一些代碼。 – Freewind

+0

@Freewind對不起,我的代碼出錯了(用'target'替換'new Handler()')。 'Runnable'應該使用不是'Handler'的視圖來發布,所以寬度和高度都可以使用。 – Luksprog

+0

現在有用,謝謝! – Freewind

相關問題