Проблема макета Xamarin xml при настройке округленной кнопки с android: фон - PullRequest
0 голосов
/ 28 апреля 2020

В настоящее время я разрабатываю приложение с Xamarin и Firebase для сообщества визуальных студий 2019. Все еще новичок в этой технологии (впервые используется). Он основан на руководстве от ufinix на youtube https://youtu.be/Uwz3rbdgc6U?t=1153 для создания Uber-подобного приложения.

У меня проблема с добавлением настроек в мое приложение, в частности с добавлением округлой кнопки. Закругленная кнопка не отображается в приложении.

С определением в кнопке

android:background="@drawable/uberroundbutton"

Результат login page

Механизм рендеринга / синтаксический анализ .net / Xamarin должен иметь доступ к моей пользовательской кнопке, расположенной в папке drawable / uberroundbutton. xml

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

  1. Подозрительный размер: это сделает представление невидимым, вероятно, предназначенным для 'layout_width' longin. xml line 10

  2. Это представление "% 1 $ s" бесполезно (без дочерних элементов, без 'background', без 'id, no' style ') ) строка 16

Здесь находится круглая кнопка. xml, где определена закругленная кнопка

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="false">
  <layer-list>
    <item android:bottom="0dp" android:left="0dp">
      <shape>
        <gradient android:angle="270" android:endColor="@color/uberAccentColor" android:startColor="@color/uberAccentColor"/>
        <stroke android:width="1dp" android:color="@color/uberAccentColor"/>
        <corners android:radius="5dp"/>
        <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp"/>
      </shape>
    </item>

  </layer-list>
</item>


<item android:state_pressed="true">
  <layer-list>
    <item android:bottom="0dp" android:left="0dp">
      <shape>
        <gradient android:angle="270" android:endColor="@color/uberAccentClick" android:startColor="@color/uberAccentClick"/>
        <stroke android:width="1dp" android:color="@color/uberAccentClick"/>
        <corners android:radius="5dp"/>
        <padding android:bottom="0dp" android:left="0dp" android:right="0dp" android:top="0dp"/>
      </shape>
    </item>

  </layer-list>
</item>

Под логином. xml где кнопка вызывается.

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.6"
    android:background="@color/uberPrimary"
    >

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/circleImageView1"
        android:layout_height="200dp"
        android:layout_width="180dp"
        android:layout_centerInParent="true"
        android:src="@drawable/centerimage"
    />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:layout_below="@+id/circleImageView1"
        android:layout_alignParentBottom="true"
    />

</RelativeLayout>


<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="0.4"
    android:padding="10dp"
    >

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/emailText"
        >

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Email"
            android:inputType="textEmailAddress"
        />
    </android.support.design.widget.TextInputLayout>

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/passwordText"
        >

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Password"
            android:inputType="textPassword"
        />
    </android.support.design.widget.TextInputLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
        <Button
            android:id="@+id/loginButton"
            android:layout_height="45dp"
            android:layout_width="300dp"
            android:text="Login"
            android:textColor="@color/uberwhite"
            android:background="@drawable/uberroundbutton"
            android:layout_centerInParent="true"
        />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_marginTop="8dp"

            android:text="@string/click_here"
        />
    </RelativeLayout>

</LinearLayout>

Я видел здесь еще один пост о stackoverflow, и, похоже, это хороший способ создать пользовательскую кнопку. Ошибка, которую я не увидел?

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

references

Спасибо за вашу помощь и время

1 Ответ

0 голосов
/ 29 апреля 2020

Так как @ CherryBu-MSFT упоминается в комментарии, все в порядке. Встроенный эмулятор android просто должен был перезагрузить приложение. Раствор закройте и снова откройте Visual Studio.

Перед закрытием:

before

После закрытия

after

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...