Как установить невидимый флажок в студии android - PullRequest
0 голосов
/ 30 мая 2020

Я создал флажок с текстом и установил невидимый . В настоящее время это не отмечено , и я знаю положение флажка, так как у меня есть поля выше. Я хочу, чтобы этот флажок был отмечен и видим, когда я нажимаю на позицию (невидимую в данный момент). коды ниже.

xml код

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="5dp"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/tv_diabetes"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:gravity="center_vertical"
                android:layout_gravity="center_vertical"
                android:fontFamily="@font/ubuntu_regular"
                android:layout_weight="0.2"
                android:text="@string/diabetes"
                android:textColor="@color/textColorAsh"
                android:textSize="16sp" />

            <CheckBox
                android:id="@+id/check_diabetes"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:theme="@style/checkBoxStyle"
                android:visibility="invisible" />
        </LinearLayout>

Вот как я пытаюсь сделать его видимым программно. Однако он не становится видимым, когда я нажимаю на место, где оно отображается.

       case R.id.check_diabetes:
            if (b == true) {
                tv_diabetes.setTextColor(getResources().getColor(R.color.textColorBlue));
                check_diabetes.setVisibility(View.VISIBLE);
                diabetes = "1";
            } else {...

Ответы [ 3 ]

1 голос
/ 30 мая 2020

Вы можете попробовать добавить onClickListener следующим образом:

 check_diabetes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            check_diabetes.setVisibility(View.VISIBLE);
            check_diabetes.setChecked(true);
        }
    });
0 голосов
/ 30 мая 2020

Просто используйте onCheckedChangeListener

checkBox.setOnCheckedChangeListener { buttonView, isChecked ->
  if(isChecked) {
  buttonView.setVisibility = View.VISIBLE

}

0 голосов
/ 30 мая 2020

Это хитрый способ получить желаемое. В вашем файле макета установите android:alpha="0", но всегда устанавливайте android:visibility="true".
А затем в коде

final CheckBox checkDiabetes= new CheckBox(R.id.check_diabetes);
            checkDiabetes.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                @Override
                public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                    if (isChecked)
                checkBox.setAlpha(1f);
            else
                checkBox.setAlpha(0f);
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...