Подтвердить что ты не робот

Интерактивный макет Android

У меня есть линейный макет, который я установил true для кликирования + фокуса. Но проблема в том, что при щелчке не отображается фокус. Как я могу получить фокус, который будет отображаться.

Вот мой код

<LinearLayout
  android:id="@+id/linear_tv_layout"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:clickable="true"
  android:focusable="true"
  android:paddingBottom="7px">
4b9b3361

Ответ 1

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


РАЗРЕШЕНИЯ - это пример из ранее связанных документов:

res/drawable/button.xml : (он доступен для списка состояний)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"
          android:drawable="@drawable/button_pressed" /> <!-- pressed -->
    <item android:state_focused="true"
          android:drawable="@drawable/button_focused" /> <!-- focused -->
    <item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>

button_pressed, button_focused и button_normal являются нормальными выводами, представляющими кнопку в этих состояниях, возможно, png (поэтому нажатие может быть вставкой, сфокусировано выделено оранжевым цветом).

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

<LinearLayout
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:background="@drawable/button">
    ...
</LinearLayout>

теперь фокусировка макета автоматически установит фоновое изображение на @drawable/button_focused и т.д.

конечно, все используемые вами чертежи должны быть ресурсами в res/drawable/ вместе с button.xml.

Ответ 2

Чтобы применить кнопку дизайна материала, нажмите анимацию для любого элемента, установите для элемента атрибут фона Android значение:

android:background="?android:attr/selectableItemBackground"

В вашем случае:

<LinearLayout
  android:id="@+id/linear_tv_layout"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:clickable="true"
  android:focusable="true"
  android:paddingBottom="7px"
  android:background="?android:attr/selectableItemBackground">

Ответ 3

@danLeon:  Вместо  Android: фон = "@андроид: рисуем /btn _default"

вы должны использовать  Android: фон = "@андроид: рисуем /list _selector_background"

прежний также изменит интерфейс, что не требуется.

Ответ 4

Попробуйте привести этот макет в начало в коде:

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    View mainView = this.findViewById(R.id.mainView);
    this.setContentView(mainView);

    LinearLayout linear_tv_layout = (LinearLayout)mainView.findViewById(R.id.linear_tv_layout);
    linear_tv_layout.bringToFront();
    // or: mainView.bringChildToFront(linear_tv_layout);
}

Если это не работает, проверьте, нет ли одного или нескольких видов, перекрывающихся над LinearLayout.

Ответ 5

Вот пример макета, это может дать вам некоторую идею:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
  android:background="@android:drawable/btn_default"
  android:clickable="true"
  android:focusable="true"
  android:layout_width="fill_parent"
  android:layout_height="0dip"
  android:layout_weight="1"
  >

  <ImageView
    android:id="@+id/image"
    android:src="@android:drawable/star_big_on"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

</LinearLayout>

<LinearLayout
  android:background="@android:drawable/btn_default"
  android:clickable="true"
  android:focusable="true"
  android:layout_width="fill_parent"
  android:layout_height="0dip"
  android:layout_weight="1"
  >

  <ImageView
    android:id="@+id/image"
    android:src="@android:drawable/star_big_on"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    />

</LinearLayout>
</LinearLayout>

Ответ 6

Простым способом является установка этого атрибута: android:background="@android:drawable/btn_default"

<LinearLayout
  android:id="@+id/linear_tv_layout"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:clickable="true"
  android:focusable="true"
  android:paddingBottom="7px"
  android:background="@android:drawable/btn_default"
  >