Вот мой файл макета, из которого я раздул изображение.Почему мой раздутый ImageView имеет высоту и ширину 0?
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.Tamaritz.dailyselfie.MainActivity" >
<ImageView
android:id="@+id/selfieImage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/abc_ab_bottom_solid_dark_holo" />
<TextView
android:id="@+id/timestamp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/selfieImage"
/>
И вот мой код внутри моего основного адаптера, который будет раздувать этот файл макет в поле зрения объектов с классом держателя вида (внутренний статический класс)
static class ViewHolder {
ImageView selfieImage;
TextView timestamp;
public ViewHolder(View selfieLayout) {
selfieImage = (ImageView) selfieLayout.findViewById(R.id.selfieImage);
timestamp = (TextView) selfieLayout.findViewById(R.id.timestamp);
}
}
....
public View getView(int position, View convertView, ViewGroup parent) {
View selfieImage = convertView;
ViewHolder holder = null;
if(selfieImage == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService
(Context.LAYOUT_INFLATER_SERVICE);
selfieImage = inflater.inflate(R.layout.activity_main, parent, false);
holder = new ViewHolder(selfieImage);
int height = holder.selfieImage.getHeight();
int width = holder.selfieImage.getWidth();
selfieImage.setTag(holder);
}
}
То, что я в основном пытаюсь сделать это, чтобы воспользоваться шаблоном владельца Android View. Если convertView имеет значение NULL, это означает, что он ранее не накачивался (не может использоваться повторно), поэтому мы должны предпринять шаги для его раздувания. Я передаю завышенное представление в конструктор, чтобы представление могло найти его изображение и текстовое представление. Мой вопрос заключается в том, что изображение было завышено и прикреплено к держателю вида, почему у него высота и ширина 0? (Знайте это, потому что я прошел через мой код). Важно, чтобы эти значения были действительными значениями, потому что я должен использовать их в методе setPic http://developer.android.com/training/camera/photobasics.html.
Я рассмотрел другие возможные темы для моей проблемы. Лицо https://stackoverflow.com/questions/20434257/gridview-setadapter-imageview-width-and-height-0 имело аналогичную проблему, но так и не получило ответа. Этот Why does my FrameLayout have 0 height? не мог быть моей проблемой, потому что пользовательский интерфейс должен был быть нарисован (не называть это в onCreate) И это не могло быть Get ImageView width and height, потому что я не вызывал высоту и ширину внутри конструктора из ImageView И не этот Inflated ImageView to put in GalleryView isn't the right size, потому что я обязательно указал родителя.
Кто-нибудь знает, почему высота и ширина возвращаются 0? Я мог бы жестко задавать высоту и ширину в моем XML-файле, но я считаю, что это плохой стиль.
Я думаю, что это то, что вы ищете: http://stackoverflow.com/questions/5820287/android-textview-has-height-and-width-of-0 –
Оооо спасибо !!! , Не могу поверить, что я не нашел, что один – committedandroider
Будет ли просмотр рисоваться после getView? – committedandroider