Я создал собственный подкласс AppCompatButton под названием SquareButton, который заставляет кнопку быть квадратной. Код для этого подкласса был найден здесь: https://stackoverflow.com/a/36991823/7648952.
Эта кнопка работает нормально и отображается, когда компоновка, в которой она содержится, надувается вне RecyclerView, однако при использовании с RecyclerView кнопка не отображается. Когда я изменяю свой макет и код для использования обычной кнопки, отображается кнопка, так что, похоже, нет ничего плохого в том, как я использую RecyclerView. Я понятия не имею, почему это может быть.
SquareButton.java:
import android.annotation.TargetApi;
import android.content.Context;
import android.os.Build;
import android.support.v7.widget.AppCompatButton;
import android.util.AttributeSet;
public class SquareButton extends AppCompatButton {
public SquareButton(Context context) {
super(context);
}
public SquareButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
int size = width > height ? height : width;
setMeasuredDimension(size, size);
}
}
Снимок экрана с SquareButton, работающим при накачке вне RecyclerView:
Скриншот SquareButton, не отображаемого внутри RecyclerView:
Снимок экрана обычной кнопки, работающей внутри RecyclerView:
Мне кажется, что это поведение странное. Любая помощь будет высоко ценится.