Почему imageView удваивается в Android? - PullRequest
0 голосов
/ 12 февраля 2019

У меня проблема с макетом Android, я не знаю, в чем проблема.На самом деле я хочу изменить шрифт текста рядом с изображением.Когда я не помещаю текст в textViews в коде xml, и я устанавливаю текст в коде java, а также устанавливаю гарнитуру, у меня возникает эта проблема.

Это мой group_view_two_4_first_activity.xml file:

    <android.support.v7.widget.CardView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="8dp"
        android:layout_marginBottom="8dp"
        app:cardCornerRadius="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/sport_complex_name"
        app:layout_constraintTop_toTopOf="@+id/sport_complex_name">

        <ImageView
            android:id="@+id/image"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scaleType="fitXY"
            android:src="@drawable/field" />

    </android.support.v7.widget.CardView>

    <TextView
        android:id="@+id/sport_complex_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:textColor="#565657"
        android:textSize="20sp"
        android:textStyle="bold"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/hallNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:textColor="#7E7E7F"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="@+id/sport_complex_name"
        app:layout_constraintTop_toBottomOf="@+id/sport_complex_name" />

    <TextView
        android:id="@+id/number"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="#7E7E7F"
        android:textSize="18sp"

        app:layout_constraintBottom_toBottomOf="@+id/hallNumber"
        app:layout_constraintEnd_toStartOf="@+id/hallNumber"
        app:layout_constraintTop_toTopOf="@+id/hallNumber" />

</android.support.constraint.ConstraintLayout>

И это его Java-файл: GroupViewTwo4FirstActivity

public class GroupViewTwo4FirstActivity extends ConstraintLayout {

    View rootView;
    TextView sportComplexName;
    TextView hallNumber;
    TextView number;
    String txtNo;
    String complexName;
    public GroupViewTwo4FirstActivity(Context context) {
        super(context);
        init(context);
    }

    public GroupViewTwo4FirstActivity(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
        init(context);
    }

    public GroupViewTwo4FirstActivity(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.GroupViewTwo4FirstActivity, defStyleAttr, 0);
        txtNo = ta.getString(R.styleable.GroupViewTwo4FirstActivity_hallNo);
        complexName = ta.getString(R.styleable.GroupViewTwo4FirstActivity_complex_name);
        ta.recycle();
        init(context);
    }

    private void init(Context context) {
        rootView = inflate(context, R.layout.group_view_two_4_first_activity, this);
        Typeface typeface = EnglishToPersian.createTypeFace1(context);
        sportComplexName = rootView.findViewById(R.id.sport_complex_name);
        hallNumber = rootView.findViewById(R.id.hallNumber);
        number = rootView.findViewById(R.id.number);
        sportComplexName.setTypeface(typeface);
        hallNumber.setTypeface(typeface);
        number.setTypeface(typeface);

        number.setText(EnglishToPersian.englishToPersian(txtNo));
        hallNumber.setText("سالن شماره ");
        sportComplexName.setText("مجتمع ورزشی افق لاله");

    }
}

Все в порядке, но когда я запускаю программу, вместо получения этогокартинка: Wanted

Я получил это: Bug

1 Ответ

0 голосов
/ 12 февраля 2019

Конструктор, вызываемый во время надувания из xml, такой:

public GroupViewTwo4FirstActivity(Context context, AttributeSet attrs) {
  this(context, attrs, 0);
  init(context);
}

this(context,attrs,0) вызывает ваш третий конструктор, который через некоторое время вызывает init(context), а затем вы снова вызываете init(context), так что выты делаешь это дважды.

Определение ваших конструкторов, как показано ниже, гарантирует, что ваш init метод вызывается ровно один раз каждый раз.

public GroupViewTwo4FirstActivity(Context context) {
  this(context, null);
}

public GroupViewTwo4FirstActivity(Context context, AttributeSet attrs) {
  this(context, attrs, 0);
}

public GroupViewTwo4FirstActivity(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
  TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.GroupViewTwo4FirstActivity, defStyleAttr, 0);
  txtNo = ta.getString(R.styleable.GroupViewTwo4FirstActivity_hallNo);
  complexName = ta.getString(R.styleable.GroupViewTwo4FirstActivity_complex_name);
  ta.recycle();
  init(context);
}

Надеюсь, это поможет!

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