gpt4 book ai didi

Android 首选项图标不以设备为中心 => Lollipop

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:12:06 25 4
gpt4 key购买 nike

我已经使用 android:icon 向 ListPreference 添加了一个图标,但是在带有 Lollipop 或 Marshmallow 的设备上,该图标位于可用空间的左侧,而不是它在 Lollipop 之前的设备上的中心位置,以及它应该如何。

Lollipop 之前的设备(api 18 - JB 4.3),这应该是这样的!

enter image description here

后 Lollipop (api 23 - MM),图标未居中。

enter image description here

PreferenceScreen

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory android:title="@string/general">

<ListPreference
android:defaultValue="@string/pref_languages_default"
android:entries="@array/languages"
android:entryValues="@array/listLangValues"
android:icon="@drawable/translate"
android:key="language"
android:title="@string/languages" />

</PreferenceCategory>

</PreferenceScreen>

translate.xml 可绘制

<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#fff" android:pathData="M12.87,15.07L10.33,12.56L10.36,12.53C12.1,10.59 13.34,8.36 14.07,6H17V4H10V2H8V4H1V6H12.17C11.5,7.92 10.44,9.75 9,11.35C8.07,10.32 7.3,9.19 6.69,8H4.69C5.42,9.63 6.42,11.17 7.67,12.56L2.58,17.58L4,19L9,14L12.11,17.11L12.87,15.07M18.5,10H16.5L12,22H14L15.12,19H19.87L21,22H23L18.5,10M15.88,17L17.5,12.67L19.12,17H15.88Z" />
</vector>

我怎样才能使它以 LL 或 MM 为中心?

最佳答案

我花了一整天的时间试图弄清楚同样的事情。我最终将每个首选项的布局设置为默认布局的修改版本。我将 ImageView 填充从 -4dp 更改为 0dp,将 icon_frame 的最小宽度从 60dp 更改为 56dp。

这绝对不理想,但现在可以用了。

所以

在首选项屏幕中将首选项布局添加到 ListPreference:

<ListPreference
android:defaultValue="@string/pref_languages_default"
android:entries="@array/languages"
android:entryValues="@array/listLangValues"
android:icon="@drawable/translate"
android:key="language"
android:title="@string/languages"
android:layout="@layout/my_preference"
/>

并创建布局\my_preference.xml:

<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2014 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<android.support.v7.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/activatedBackgroundIndicator"
android:clipToPadding="false"
android:gravity="center_vertical"
android:minHeight="?attr/listPreferredItemHeightSmall"
android:orientation="horizontal"
android:paddingEnd="?attr/listPreferredItemPaddingRight"
android:paddingLeft="?attr/listPreferredItemPaddingLeft"
android:paddingRight="?attr/listPreferredItemPaddingRight"
android:paddingStart="?attr/listPreferredItemPaddingLeft"
tools:ignore="NewApi">

<android.support.v7.widget.LinearLayoutCompat
android:id="@+id/icon_frame"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginStart="0dp"
android:gravity="start|center_vertical"
android:minWidth="56dp"
android:orientation="horizontal"
android:paddingBottom="4dp"
android:paddingEnd="12dp"
android:paddingRight="12dp"
android:paddingTop="4dp">

<android.support.v7.widget.AppCompatImageView
android:id="@+android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxHeight="48dp"
android:maxWidth="48dp" />
</android.support.v7.widget.LinearLayoutCompat>

<RelativeLayout
android:layout_width="0px"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingBottom="16dp"
android:paddingTop="16dp">

<android.support.v7.widget.AppCompatTextView
android:id="@android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceListItem"
tools:text="title" />

<android.support.v7.widget.AppCompatTextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@android:id/title"
android:layout_alignStart="@android:id/title"
android:layout_below="@android:id/title"
android:textAppearance="?android:attr/textAppearanceListItemSecondary"
android:textColor="?android:attr/textColorSecondary"
tools:text="summary" />
</RelativeLayout>

<!-- Preference should place its actual preference widget here. -->
<android.support.v7.widget.LinearLayoutCompat
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="end|center_vertical"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingStart="16dp" />

同样,这绝对不是正确的解决方案,但它是一个解决方案。希望对您有所帮助。

关于Android 首选项图标不以设备为中心 => Lollipop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34964239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com