Android13-Launcher3_APP名称可以两行显示

332 阅读1分钟

未修改前

Untitled.png

Launcher3/src/com/android/launcher3/allapps/AllAppsGridAdapter.java

AllAppsGridAdapter继承自BaseAllAppsAdapter

Launcher3/src/com/android/launcher3/allapps/BaseAllAppsAdapter.java

public abstract class BaseAllAppsAdapter<T extends Context & ActivityContext> extends
        RecyclerView.Adapter<BaseAllAppsAdapter.ViewHolder> {

在onCreateViewHolder方法构建APP Item

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        switch (viewType) {
            case VIEW_TYPE_ICON:
                int layout = !FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get() ? R.layout.all_apps_icon
                        : R.layout.all_apps_icon_twoline;
                BubbleTextView icon = (BubbleTextView) mLayoutInflater.inflate(
                        layout, parent, false);
                icon.setLongPressTimeoutFactor(1f);
                icon.setOnFocusChangeListener(mIconFocusListener);
                icon.setOnClickListener(mOnIconClickListener);
                icon.setOnLongClickListener(mOnIconLongClickListener);
                // Ensure the all apps icon height matches the workspace icons in portrait mode.
                icon.getLayoutParams().height =
                        mActivityContext.getDeviceProfile().allAppsCellHeightPx;
                if (FeatureFlags.ENABLE_TWOLINE_ALLAPPS.get()) {
                    icon.getLayoutParams().height += mExtraHeight;
                }
                return new ViewHolder(icon);
            case VIEW_TYPE_EMPTY_SEARCH:
                return new ViewHolder(mLayoutInflater.inflate(R.layout.all_apps_empty_search,
                        parent, false));
            case VIEW_TYPE_ALL_APPS_DIVIDER:
                return new ViewHolder(mLayoutInflater.inflate(
                        R.layout.all_apps_divider, parent, false));
            case VIEW_TYPE_WORK_EDU_CARD:
                return new ViewHolder(mLayoutInflater.inflate(
                        R.layout.work_apps_edu, parent, false));
            case VIEW_TYPE_WORK_DISABLED_CARD:
                return new ViewHolder(mLayoutInflater.inflate(
                        R.layout.work_apps_paused, parent, false));
            default:
                BaseAdapterProvider adapterProvider = getAdapterProvider(viewType);
                if (adapterProvider != null) {
                    return adapterProvider.onCreateViewHolder(mLayoutInflater, parent, viewType);
                }
                throw new RuntimeException("Unexpected view type" + viewType);
        }
    }

Launcher3/res/layout/all_apps_icon.xml

布局文件

<com.android.launcher3.BubbleTextView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:launcher="http://schemas.android.com/apk/res-auto"
    style="@style/BaseIcon.AllApps"
    android:id="@+id/icon"
    launcher:iconDisplay="all_apps"
    launcher:centerVertically="true" />

看Launcher3/res/values/styles.xml

    <!-- Base theme for BubbleTextView and sub classes -->
    <style name="BaseIcon" parent="BaseIconUnBounded">
<!--        <item name="android:lines">1</item>-->
<!--       修改为可以两行显示-->
        <item name="android:lines">2</item>
    </style>

    <!-- Base theme for AllApps BubbleTextViews -->
    <style name="BaseIcon.AllApps" parent="BaseIcon">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:stateListAnimator">@animator/all_apps_fastscroll_icon_anim</item>
        <item name="android:paddingLeft">@dimen/dynamic_grid_cell_padding_x</item>
        <item name="android:paddingRight">@dimen/dynamic_grid_cell_padding_x</item>
    </style>

效果

Untitled 1.png