Я создаю это представление, которое включает несколько других представлений:
Находится в 'res / layout / view_no_content'
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:orientation="vertical"
tools:context="com.gamma.collegeconnect.customs.NoContentView">
<ImageView
android:id="@+id/iv_no_content_image"
android:layout_width="62dp"
android:layout_height="62dp"
android:layout_marginBottom="4dp"
app:srcCompat="@drawable/ic_no_content_default" />
<TextView
android:id="@+id/tv_no_content_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textAllCaps="true"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
android:textSize="17sp"
tools:text="no content" />
<TextView
android:id="@+id/tv_no_content_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:maxWidth="320dp"
android:textSize="14sp"
tools:text="We couldn't find any thing related" />
<Button
android:id="@+id/btn_no_content_action"
style="@style/Widget.MaterialComponents.Button.UnelevatedButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:gravity="center"
android:minWidth="165dp"
android:minHeight="51dp"
android:textSize="13sp"
tools:text="Action" />
И это соответствующий java класс:
public class NoContentView extends FrameLayout {
public NoContentView(Context context) {
super(context);
init(context);
}
public NoContentView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public NoContentView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
public NoContentView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context);
}
private void init(Context context) {
LayoutInflater.from(context).inflate(R.layout.view_no_content, this);
}
public void setup(@StringRes int title, @StringRes int text) {
setup(title, text, 0, null);
}
public void setup(@StringRes int title, @StringRes int text, @StringRes int actionButtonText, OnClickListener onActionButtonClickedListener) {
setup(title, text, actionButtonText, onActionButtonClickedListener, R.drawable.ic_no_content_default);
}
public void setup(@StringRes int title, @StringRes int text, @StringRes int actionButtonText, OnClickListener onActionButtonClickedListener, @DrawableRes int image) {
setup(title, text, actionButtonText, onActionButtonClickedListener, image, 0, false);
}
public void setup(@StringRes int title, @StringRes int text, @StringRes int actionButtonText, OnClickListener onActionButtonClickedListener, @DrawableRes int image, @ColorRes int tintColorRes) {
setup(title, text, actionButtonText, onActionButtonClickedListener, image, tintColorRes, true);
}
private void setup(@StringRes int title, @StringRes int text, @StringRes int actionButtonText, OnClickListener onActionButtonClickedListener, @DrawableRes int image, @ColorRes int tintColorRes, boolean hasTint) {
((TextView) findViewById(R.id.tv_no_content_title)).setText(title);
((TextView) findViewById(R.id.tv_no_content_text)).setText(text);
Button button = findViewById(R.id.btn_no_content_action);
if (onActionButtonClickedListener != null) {
FastUtils.showIfHidden(button);
button.setText(actionButtonText);
button.setOnClickListener(onActionButtonClickedListener);
} else {
FastUtils.hideIfShown(button);
}
ImageView imageView = findViewById(R.id.iv_no_content_image);
imageView.setImageResource(image);
if (hasTint)
imageView.setImageTintList(ColorStateList.valueOf(ContextCompat.getColor(getContext(), tintColorRes)));
}
}
Просыпается нормально, никаких проблем. У меня есть одна проблема, это то, что представление «NoContentView» при включении в макет не отображается в редакторе макетов студии android. Как я могу сказать android studio просматривать макет в файле макета 'view_no_content' всякий раз, когда он видит тег NoContentView