2011-02-03 9 views
11

私は、レイアウトファイルに書かれたと私はアンドロイドを読むことができますどのようにこのImageViewのマージンをプログラムで読み取るにはどうすればよいですか?

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 

     <ImageView android:id="@+id/news_image" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent" 
      android:layout_marginLeft="18dip" 
      android:layout_marginRight="18dip" 
      android:background="#aaaaaa" /> 

</LinearLayout> 

のように見えているImageViewの持っている:私の活動でlayout_marginLeft属性を?

私はこのコードを試しましたが、私のImageViewLayoutParamsには余白のメンバーはありません(例えばLinearLayout.LayoutParamsのように)。

ImageView imageView = (ImageView)findViewById(R.id.news_image); 
LayoutParams lp = imageView.getLayoutParams(); 

int marginLeft = lp.marginLeft; // DON'T do this! It will not work 
           // cause there is no member called marginLeft 

ImageViewからマージンを得るためにどのように任意の提案ですか?

ありがとうございました!

答えて

25

ビューがであるレイアウトに固有の型にLayoutParamsをキャストしなければならないことは、内部のあなたのビューであること、です。 LinearLayout、次の操作を行う必要があるでしょう:今

ImageView imageView = (ImageView)findViewById(R.id.news_image); 
LinearLayout.LayoutParams lp = 
       (LinearLayout.LayoutParams) imageView.getLayoutParams(); 

lpあなたがmargin*フィールドにアクセスできるようになります。

+0

ありがとうございました!これは機能します。 Androidのドキュメントで何も見つかりませんでした。たぶん私はちょうど間違った場所を見ました。 – OemerA

6

それのためのあなたのゾルは以下の通りです:


LinearLayout. LayoutParams lp = (android.widget.LinearLayout.LayoutParams) imageView.getLayoutParams(); 

    int i=lp.leftMargin; 
関連する問題