2016-02-22 1 views
0

Ниже представлен ImageView, который не может «wrap_content» по высоте и ширине, поскольку он отображает изображение с помощью подстановки Picasso() и centerInside().Android - Отображение дополнительного макета под ImageView при использовании подстановки Picasso() и centerInside()

В связи с этим я должен либо установить высоту в dp, либо в состояние «match_parent». Если я установил определенную высоту в dp, отобразится моя кнопка, но это не идеально подходит для экранов разных размеров, конечно. Если я установил match_parent, ImageView заполнит остальную часть экрана, и я не могу отобразить мою кнопку под ImageView.

Кто-нибудь знает о способе гнездо моего ImageView каким-либо образом, чтобы я мог отобразить свою последнюю кнопку?

Кроме того, я не могу понять, как выровнять мою фотографию в верхней части ImageView, пожалуйста, помогите с этим, если сможете.


основная_активность.xml.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/colorBackground"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    style="@style/Toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?actionBarSize" 
    android:minHeight="?attr/actionBarSize" /> 

<LinearLayout 
    android:id="@+id/button_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/toolbar" 
    android:padding="10dp"> 

    <Button 
     android:id="@+id/button_kitty" 
     style="@style/Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/button_kitty" /> 

    <Space 
     android:id="@+id/space" 
     android:layout_width="10dp" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/button_cat" 
     style="@style/Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/button_cat" /> 

</LinearLayout> 

<ImageView 
    android:id="@+id/image" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@id/button_layout" 
    android:layout_marginBottom="17dp" 
    android:layout_marginLeft="15dp" 
    android:layout_marginRight="15dp" 
    android:layout_marginTop="4dp" 
    android:adjustViewBounds="true" /> 

<ProgressBar 
    android:id="@+id/progress_bar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/button_layout" 
    android:layout_centerHorizontal="true" 
    android:layout_gravity="center" 
    android:layout_marginTop="30dp" 
    android:indeterminate="true" 
    android:visibility="invisible" /> 

<Button 
    android:id="@+id/button_facebook" 
    style="@style/Button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/image" 
    android:layout_centerHorizontal="true" 
    android:gravity="center" /> 


ActivityMain.java

@Override 
public void onResponse(Call<KittyCatModel> call, Response<KittyCatModel> response) { 
    KittyCatModel model = response.body(); 
    String url = model.getSource(); 
    Picasso.with(this) 
      .load(url) 
      .fit() 
      .centerInside() 
      .into(imageView, this); 
} 

Screen shot with Layout Bounds on

ответ

0

На GitHub Пикассо, есть нить относительно годный() не работает, когда ImageView имеет adjustView Оценки равны true. Удалите один из них и посмотрите, как он идет (я делаю это с мобильного телефона, поэтому не могу проверить его, прежде чем отвечать, извините).

Вот ссылка в эту тему: https://github.com/square/picasso/issues/425

Это нить ссылка на другую нить на мерзавце Пикассо относительно создания пользовательского ImageView, чтобы сделать эту работу так, как вы хотите

Вот ссылка в эту тему: https://github.com/square/picasso/issues/457

0

Если бы некоторую помощь в автономном режиме с этим вопросом, ответ:

Это не имеет ничего общего с Пикассо, это просто проблема с XML.

ImageView и ProgressBar должны быть в RelativeLayout в пределах LinearLayout, чтобы я мог применить layout_weight = "1" к этому RelativeLayout.

Это позволило мне «match_parent» на моей ширине и высоте ImageView, поэтому изображение заполняет его макет, но не скрывает нижнюю кнопку.

Надеюсь, что это поможет кому-то еще в будущем.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@color/color_background" 
    android:orientation="vertical"> 

<android.support.v7.widget.Toolbar 
    android:id="@+id/toolbar" 
    style="@style/Toolbar" 
    android:layout_width="match_parent" 
    android:layout_height="?actionBarSize" 
    android:minHeight="?attr/actionBarSize" /> 

<LinearLayout 
    android:id="@+id/button_layout_generate" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/toolbar" 
    android:orientation="horizontal" 
    android:padding="12dp"> 

    <Button 
     android:id="@+id/button_kitty" 
     style="@style/Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/button_kitty" /> 

    <Space 
     android:id="@+id/space" 
     android:layout_width="10dp" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/button_cat" 
     style="@style/Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:text="@string/button_cat" /> 

</LinearLayout> 

<RelativeLayout 
    android:id="@+id/image_layout" 
    android:layout_width="match_parent" 
    android:layout_height="0dp" 
    android:layout_below="@id/button_layout_generate" 
    android:layout_weight="1" 
    android:paddingRight="16dp" 
    android:paddingLeft="16dp"> 

    <ImageView 
     android:id="@+id/image" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:adjustViewBounds="true" /> 

    <ProgressBar 
     android:id="@+id/progress_bar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:indeterminate="true" 
     android:visibility="invisible" /> 

</RelativeLayout> 

<LinearLayout 
    android:id="@+id/button_layout_facebook" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_below="@id/image" 
    android:orientation="horizontal" 
    android:padding="12dp"> 

    <Space 
     android:id="@+id/space_left" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.5" /> 

    <Button 
     android:id="@+id/button_facebook" 
     style="@style/Button" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/image" 
     android:layout_weight="1" 
     android:enabled="false" 
     android:gravity="center" 
     android:text="@string/button_facebook" /> 

    <Space 
     android:id="@+id/space_right" 
     android:layout_width="0dp" 
     android:layout_height="wrap_content" 
     android:layout_weight="0.5" /> 

</LinearLayout> 

</LinearLayout>