Текст попадает поверх эффекта пульсации в пользовательском макете для предпочтений

#android #textview #android-preferences

#Android #textview #android-настройки

Вопрос:

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

Предпочтение

Ниже мы можем увидеть простую версию предпочтения

 <PreferenceCategory 
android:layout="settings_style_title"   
app:iconSpaceReserved="false">
    
    <SwitchPreference
    android:defaultValue="true"
    android:key="a_key"
    android:title="this text gets above the effect"
    android:layout="my_custom_layout" />

</PreferenceCategory>
  

И my_custom_layout .

 <RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" 
android:layout_height="40dp"
android:gravity="center_vertical">
    
    <TextView   
    android:id="@android:id/title"      
    android:layout_width="wrap_content"     
    android:layout_height="wrap_content"        
    android:layout_alignParentLeft="true"       
    android:layout_marginLeft="15dp" 
    android:fontFamily="sans-serif"

    android:minHeight="25dp"

    android:scrollbars="none"android:singleLine="true"

    android:textColor="#000000"
 
    android:textSize="18sp"/>

   <Switch      
    android:id="@android:id/switch_widget"      
    android:layout_width="wrap_content"     
    android:layout_height="wrap_content"    
    android:layout_alignParentRight="true"      
    android:layout_marginRight="15dp"/>

</RelativeLayout>
  

Я также пытался использовать android:widgetLayout , но это управляет только пространством, в котором находится виджет, и я не могу присвоить атрибуты textview .

Затем я попытался указать атрибуты непосредственно на SwitchPreference и использовать только widgetLayout , но также не сработал.

Я также попытался установить заголовок внутри my_custom_layout .

Я также попытался удалить android:background , но без эффекта.

Я думаю, что это как-то связано с макетом, потому что, когда я проверяю их, предпочтение без my_custom_layout выглядит так:

без пользовательского макета

в то время как тот, у которого он выглядит так:

с пользовательским макетом

Также что такое widget_frame? Кажется, я не могу найти где-нибудь, чтобы включить его, my_custom_layout чтобы у меня была такая же структура. Есть мысли?

Комментарии:

1. Удалите фон TextView , если он есть.

2. @sajjad хорошая мысль, я только что сделал, но без эффекта. Текст по-прежнему остается сверху и без android:background .

3. Поделитесь своими атрибутами TextView в xml макете.

4. @Sajjad Я только что поделился TextView атрибутами и дополнительной информацией.