Попробуйте поместить прослушиватель щелчка на дочернем виде карты, например
<android.support.v7.widget.CardView
android:id="@+id/cardRight"
android:layout_width="0dp"
android:layout_height="0dp"
app:cardCornerRadius="10dp"
android:elevation="4dp"
android:layout_marginEnd="4dp"
android:layout_marginStart="4dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/guideline"
app:layout_constraintTop_toBottomOf="@+id/cardTop">
<LinearLayout
android:id="@+id/layRight"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:weightSum="6"
android:orientation="vertical"
android:gravity="center">
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="3"
android:src="@drawable/illustration"
android:scaleType="centerCrop"/>
</LinearLayout>
</android.support.v7.widget.CardView>
, а в своей деятельности определите linearLayout и попробуйте установить onClicklistener с помощью
.Существует более длинная форма Escape в шаблоне \U
сопровождаемый восемью цифрами, а не \u
сопровождаемый четырьмя цифрами. Это также используется в Java и Python среди других:
>>> '\xf0\x90\x84\x82'.decode("UTF-8")
u'\U00010102'
Однако, если Вы используете строки байтов, почему не только выходят из каждого байта как вышеупомянутый, вместо того, чтобы полагаться на компилятор для преобразования Escape в строку UTF-8? Это, казалось бы, было бы более портативным также - если я компилирую следующую программу:
#include <iostream>
#include <string>
int main()
{
std::cout << "narrow: " << std::string("\uFF0E").length() <<
" utf8: " << std::string("\xEF\xBC\x8E").length() <<
" wide: " << std::wstring(L"\uFF0E").length() << std::endl;
std::cout << "narrow: " << std::string("\U00010102").length() <<
" utf8: " << std::string("\xF0\x90\x84\x82").length() <<
" wide: " << std::wstring(L"\U00010102").length() << std::endl;
}
На win32 с моими текущими опциями статья дает:
warning C4566: character represented by universal-character-name '\UD800DD02' cannot be represented in the current code page (932)
Компилятор пытается преобразовать все Escape unicode в строках байтов к странице системного кода, которая в отличие от UTF-8 не может представить все unicode символы. Странно это поняло это \U00010102
\uD800\uDD02
в UTF-16 (его внутреннее unicode представление) и искаженный Escape в сообщении об ошибке...
Когда выполнено, печать программы:
narrow: 2 utf8: 3 wide: 1
narrow: 2 utf8: 4 wide: 2
Обратите внимание, что строки байтов UTF-8 и широкие строки корректны, но компилятору не удалось преобразовать "\U00010102"
, предоставление строки байтов "??"
, неправильный результат.