2014-02-04 3 views
0

В моем приложении для Android я попытаюсь опубликовать некоторые данные по ButtonClick.Получить расчетную ширину динамически добавленного элемента пользовательского интерфейса

Я создал отдельную раскладку:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TableLayout 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="3" > 

      <TableRow> 
       <TextView 
        android:id="@+id/TV1" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:text="@string/strTV1" /> 
      </TableRow> 
    </TableLayout> 

    <ImageView 
      android:id="@+id/overallPortraitIV" 
      android:layout_width="0dp" 
      android:layout_height="match_parent" 
      android:layout_weight="1" 
      android:contentDescription="@string/strPortrait"/> 
</LinearLayout> 

Моего OnClick событие:

View view = getLayoutInflater().inflate(R.layout.overall_rfid_layout, null); 
     overallResultTab.addView(view); 
ImageView portraitImage=(ImageView)view.findViewById(R.id.overallRfidPortraitIV); 
     decodedByte = scaleToFitWidth(decodedByte, portraitImage.getMeasuredWidth()); 
     portraitImage.setImageBitmap(decodedByte); 

Как вы видите, моя ширина ImageView устанавливаются в 0, но он имеет вес, поэтому, factical ширина не должно быть 0. Итак, как получить количество пикселей, которое фактически занято ImageView?

Как показано в коде, я пробовал getMeasuredWidth, также, getWidth, но они возвращают 0;

ответ

0

Поскольку вы измеряете ImageView ширина «s перед установкой любого изображения видового Вот почему getMeasuredWidth возвращающегося 0. В вашем XML, вы установите layout_width в„0dip“поэтому перед установкой любого изображения на это ImageView его ширина останется «0dip».

+0

И в этом случае вес не имеет никакого эффекта? –

+0

нет ... это не имеет никакого эффекта. Это будет осуществляться весом только тогда, когда ImageView имеет изображение. –

+0

Но как решить ситуацию, когда я хочу поместить изображение в ImageView без какого-либо эффекта в макет? В моем случае ImageView занимает 1/4 ширины экрана - как сделать изображение одинаково широким? –

Смежные вопросы