В Android Studio почему нет TextViewPreference? - PullRequest
0 голосов
/ 10 июля 2020

Хорошо, поэтому я хотел создать действие настроек. Мне сказали, что использование макета предпочтений значительно упрощает задачу. Мне нужен TextView, который при нажатии выполняет определенное действие, но TextViewPreference отсутствует. Ближайшая вещь - EditTextPreference, у которой атрибут «selectable» должен быть отключен, что делает его серым.

Еще одна вещь, эти настройки не имеют атрибута ID. Как мне прикрепить к ним OnClickListeners, если у них нет ID ???

1 Ответ

1 голос
/ 10 июля 2020

попробуйте ->

Метод 1

создайте элемент пользовательского макета предпочтений и используйте его в действии предпочтений: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">

    <TextView android:id="@android:id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:ellipsize="marquee"
        android:fadingEdge="horizontal" />

  </LinearLayout>

добавить в предпочтение xml:

<Preference
android:title="@string/label_pref_version"
android:key="@string/pref_version"
android:layout="@layout/pref" />

затем, наконец: -

активируйте findViewById в своем коде активности и прикрепите слушателя ....

Метод 2

Для xml:

<Preference android:title="Acts like a text"
            android:key="@string/myCooltext"
            android:summary="This is a text"/>

Затем для java в вашем onCreate ()

Preference text = findPreference(getString(R.string.myCoolText));
text.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {   
                //code for what you want it to do   
                return true;
            }
        });

Метод 3

Вы можете попробовать вот так, чтобы активировать Textview:

 View name= ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layouttext, null, false);

добавить android: id к LinearLayout, который содержит Textview в layouttext. xml, т.е. android: id = "@ + id / mylayout"

 LinearLayout mLayout = (LinearLayout)name.findViewById(R.id.mylayout);
  Textview login = (Textview) footerView.findViewById(R.id.Text);
  login.setOnClickListener(this);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...