Почему мой DbNull не является одиночным элементом, когда я десериализовываю его использование XmlSerialiser?

Если изображения имеют переменный размер, вы всегда получите такой эффект. Я предполагаю, что вам нужно установить фиксированный размер для ImageView и дать ему заданный цвет фона - с точки зрения вашего примера черный будет иметь смысл. Оберните вид изображения в FrameLayout или просто вид с желтым фоном и отступом 1px.

РЕДАКТИРОВАТЬ


Я подумал об этом, и мой ответ не был правильным, так что ...

Если вы установите для каждого ImageView фиксированный размер, отступы и поля. а затем, при необходимости, установите цвет фона, чтобы получить желаемый эффект.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent" >


        <ImageView
            android:id="@+id/imageView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="#52D017"
            android:padding="1dp"
            android:layout_margin="5dp"
            android:src="@drawable/test1"
            tools:ignore="ContentDescription" />

        <ImageView
            android:id="@+id/imageView2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="5dp"
            android:background="#52D017"
            android:padding="1dp"
            android:src="@drawable/test2"
            tools:ignore="ContentDescription" />

</LinearLayout>

На снимке экрана оба отображаемых изображения имеют ширину менее 100 пикселей и различную высоту.

example

Это не обрабатывает изображения с прозрачным фоном, так как тогда (в этом случае) желто-зеленый цвет просвечивает. Вы можете решить эту проблему, обернув каждый ImageView в FrameLayout. Создание черного цвета фона ImageView и установка FrameLayout на WrapContent с требуемым заполнением (я думаю)

6
задан John Saunders 25 July 2009 в 23:53
поделиться

2 ответа

Хотя DBNull.Value является статическим только для чтения и существует только в виде единственного экземпляра ... при десериализации код сериализации будет создавать новый экземпляр класса DBNull из «данных» в потоке. Поскольку DBNull.Value является просто экземпляром DBNull , сериализация не может узнать, что это «особый» экземпляр.

ПРИМЕЧАНИЕ:
Для По той же причине, если вы создадите свой собственный класс с экземпляром singleton, который вы сериализуете, а затем десериализуете, вы получите точно такое же поведение. Хотя десериализованный экземпляр будет неотличим от исходного, они не будут одним и тем же экземпляром .

7
ответ дан 16 December 2019 в 21:45
поделиться

Ваш код C # не означает вызов метода .Equals . Не тестировав его, я почти уверен, что если вы замените

someObject == DbNull.Value

на

DbNull.Value.Equals(someObject) 

, это даст ожидаемый результат. Чтобы немного узнать об операторе равенства и методе Equals, взгляните на: Сообщение в блоге Эрика Липперса по этой теме

1
ответ дан 16 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: