Как я могу сделать TextView похожим на кнопку? - PullRequest
5 голосов
/ 29 апреля 2011

У меня есть ListActivity в Android.Каждая строка - это просто элемент, который запускает другое действие с некоторым ресурсом.По умолчанию это, конечно, TextView.

Мне бы хотелось (и под «я бы хотел» я имею в виду «клиент настаивает»), чтобы TextView выглядел как кнопка.Если я на самом деле сделаю их кнопками, обработчик щелчков по умолчанию по умолчанию больше не будет работать - даже если они не фокусируются - поэтому мне нужно написать код, чтобы вручную накачать представление, содержащее кнопку, и установить обработчик щелчков.

Есть ли какой-нибудь способ, которым я могу просто сделать TextView похожим на кнопку без какого-либо поведения кнопки?

Ответы [ 4 ]

10 голосов
/ 29 апреля 2011

Вы можете просто установить стиль в XML-файле макета.

См. http://developer.android.com/reference/android/R.style.html для списка встроенного стиля платформы.Не уверен, насколько хорошо это будет работать, но это достаточно просто сделать.Попробуйте это:

<TextView android:layout_height="wrap_content" style="@android:style/Widget.Button" android:layout_marginRight="5sp" android:text="" android:layout_width="fill_parent"></TextView>

РЕДАКТИРОВАТЬ: проблема в том, что стиль кнопки по умолчанию устанавливает атрибут android:clickable.Попробуйте добавить атрибут android:clickable и установите для него значение false:

<TextView android:layout_height="wrap_content" style="@android:style/Widget.Button" android:layout_marginRight="5sp" android:text="" android:clickable="false" android:layout_width="fill_parent"></TextView>
6 голосов
/ 29 апреля 2011

Вы должны просто иметь возможность создать Drawable кнопки и использовать setBackgroundDrawable() на TextView.

В качестве альтернативы вы можете использовать атрибут android:background XML.

1 голос
/ 27 марта 2016

Возьмите этот полный макет из моего проекта:

<?xml version="1.0" encoding="utf-8"?>

<!-- Solution 1: New Button appearance -->
<!--TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    style="@android:style/Widget.DeviceDefault.Button"
    android:textAllCaps="false"
    android:focusable="false"
    android:clickable="false" /-->

<!-- Solution 2: Old Button appearance -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:background="@android:drawable/btn_default"
      android:gravity="center_vertical|center_horizontal" />

без clickable = false onItemClick () не запускается в ListView / GridView и т. Д.

без focusable = false у вас нетэффект нажатой кнопки при нажатии кнопки TextView.

0 голосов
/ 05 июля 2017

В наборе текстовых данных XML:

android:clickable="true"

и в наборе файлов Java:

TextView youtTextView=(TextView)findViewById(R.id.yourTxt);

youtTextView.setOnClickListener(new OnClickListener() {

    public void onClick(View v) {
       //code your button click action/event
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...