Установить скрытие и видимость изображения программно

У меня есть представление изображения в моем макете. Я хочу, если в моей базе данных есть какое-либо изображение, сделать мое изображение видимым, иначе мое изображение исчезнет. Мое изображение-представление имеет особый размер в макете, когда нет никакого изображения, пространство изображения-представления существует, и оно пусто, хотя мое изображение-представление исчезло.

вот мои макеты:

<RelativeLayout
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:layout_above = "@+id/addbtn"
    android:layout_alignParentLeft = "true"
    android:layout_below = "@+id/title"
    android:layout_centerHorizontal = "true">

    <ScrollView
        android:id = "@+id/scrollView1"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_centerHorizontal = "true"
        android:layout_marginBottom = "15dp"
        android:layout_marginTop = "3dp">

        <LinearLayout

            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:gravity = "center"
            android:orientation = "vertical">

                <ImageView
                    android:id = "@+id/main_matn_img"
                    android:layout_width = "200dp"
                    android:layout_height = "150dp"
                    android:layout_gravity = "center_horizontal"
                    android:layout_marginLeft = "5dp"
                    android:visibility = "gone"
                    android:layout_marginRight = "5dp"
                    android:layout_marginTop = "10dp" />

            <TextView
                android:id = "@+id/main_matn_matn"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "right"
                android:layout_marginBottom = "15dp"
                android:layout_marginLeft = "30dp"
                android:layout_marginRight = "30dp"
                android:layout_marginTop = "30dp"
                android:gravity = "right"
                android:text = "TextView"
                android:textColor = "#000"
                android:textDirection = "rtl"
                android:textSize = "20sp"

                />


        </LinearLayout>
    </ScrollView>
</RelativeLayout>

>

и вот как проверить видимость и видимость.

  String p = db.getpic("tbl_book", sea, Name, page3 + "");

    if (p != null) {
        int ImageResource = getResources().getIdentifier(p, "drawable", getPackageName());
        img.setImageResource(ImageResource);
        img.setVisibility(View.VISIBLE);

    } else {
        img.setVisibility(View.GONE);
    }

Таким образом, если у меня нет изображения, он показывает размер моего изображения, хотя его нет.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
39
2

Ответы 2

Первый способ:

Вы должны использовать wrap_content в своем изображении:

<ImageView
                android:id = "@+id/main_matn_img"
                android:layout_width = "wrap_content"
                android:layout_height = "wrap_content"
                android:layout_gravity = "center_horizontal"
                android:layout_marginLeft = "5dp"
                android:visibility = "gone"
                android:layout_marginRight = "5dp"
                android:layout_marginTop = "10dp" />

Второй способ:

вы можете обрабатывать это программно следующим образом:

 String p = db.getpic("tbl_book", sea, Name, page3 + "");

    if (p != null) {
        int ImageResource = getResources().getIdentifier(p, "drawable", getPackageName());
        img.setImageResource(ImageResource);
        img.setVisibility(View.VISIBLE);
img.getLayoutParams().height = 100;
            img.getLayoutParams().width=100;

    } else {
  img.getLayoutParams().height = 0;
            img.getLayoutParams().width=0;
        img.setVisibility(View.GONE);
    }

Нет, я должен указать размер моего изображения.

balvin 24.02.2019 09:12

Если вы используете статический размер, вы не можете решить свою проблему, возможно, вы можете установить свой imageView между relativeLayout и установить статический размер в relaytiveLayout и установить wrap_content в свой imageView.

milad salimi 24.02.2019 09:15

поэтому, если я это сделаю, я должен сделать свой относительный макет видимым и исчезнуть. в чем разница? Могу ли я говорить по-персидски? Я думаю, что вы тоже можете.

balvin 24.02.2019 09:20

Я думаю, что вы можете сделать это и программно, добавил я.

milad salimi 24.02.2019 09:23

Изменить эту строку

<ImageView
                    android:id = "@+id/main_matn_img"

                    android:visibility = "visible"
</ImageView>


     String p = db.getpic("tbl_book", sea, Name, page3 + "");
        if (p != null && p.length()>0) {
 img.setVisibility(View.VISIBLE);
            int ImageResource = getResources().getIdentifier(p, "drawable", getPackageName());
            img.setImageResource(ImageResource);


        } else {
            img.setVisibility(View.GONE);
        }

Я проверяю это, но ничего не меняется. Я должен дать статический размер моему изображению, и это проблема. Я действительно не знаю, что мне делать?

balvin 24.02.2019 09:31

@balvin Сделайте одну вещь, измените начальную видимость main_matn_img на видимую и обработайте видимость через код.

Sibin 24.02.2019 09:53

Другие вопросы по теме