闹钟DeskClock缅甸语显示不全问题分析

先上图



该界面通过操作 闹钟点击 设置闹钟弹出来的对话框,

点击操作是AlarmTimeClickHandler.java 中onClockClicked方法:

    public void onClockClicked(Alarm alarm) {
        mSelectedAlarm = alarm; //wanlihua
        TimePickerCompat.showTimeEditDialog(mFragment, alarm,
                DateFormat.is24HourFormat(mFragment.getActivity()));
    }

找到 TimePickerCompat.java  showTimeEditDialog实现方法:
    public static void showTimeEditDialog(Fragment targetFragment, Alarm alarm,
            boolean use24hourFormat) {
        // Make sure the dialog isn't already added.
        final FragmentManager manager = targetFragment.getFragmentManager();
        final FragmentTransaction ft = manager.beginTransaction();
        final Fragment prev = manager.findFragmentByTag(FRAG_TAG_TIME_PICKER);
        if (prev != null) {
            ft.remove(prev);
        }
        /// M: Avoid exception
        ft.commitAllowingStateLoss();
		
        if (Utils.isLOrLater()) {
            final TimePickerPostL picker = new TimePickerPostL();
            picker.setTargetFragment(targetFragment, 0);
            picker.setOnTimeSetListener((OnTimeSetListener) targetFragment);
            picker.setAlarm(alarm);
            picker.show(manager, FRAG_TAG_TIME_PICKER);
			android.util.Log.d("wanlihua", "wanlihua debug showTimeEditDialog");
        } else {
            final int hour, minutes;
            if (alarm == null) {
                hour = 0;
                minutes = 0;
            } else {
                hour = alarm.hour;
                minutes = alarm.minutes;
            }
            TimerPickerPreL picker = TimerPickerPreL.newInstance(targetFragment, hour,
                    minutes, use24hourFormat);
            if (!picker.isAdded()) {
                picker.show(manager, FRAG_TAG_TIME_PICKER);
            }
        }
    }

看得到是  final TimePickerPostL picker = new TimePickerPostL();   
在看TimePickerPostL类的实现的,

    public static class TimePickerPostL extends DialogFragment {

        private Alarm mAlarm;
        private android.app.TimePickerDialog.OnTimeSetListener mListener;

        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final int hour, minute;
            if (mAlarm == null) {
                final Calendar c = Calendar.getInstance();
                hour = c.get(Calendar.HOUR_OF_DAY);
                minute = c.get(Calendar.MINUTE);
            } else {
                hour = mAlarm.hour;
                minute = mAlarm.minutes;
            }

            return new android.app.TimePickerDialog(getActivity(), R.style.TimePickerTheme,
                    mListener, hour, minute, DateFormat.is24HourFormat(getActivity()));
        }

看到其实是framework中TimePickerDialog  TimePickerDialog.java

        private Alarm mAlarm;
        private android.app.TimePickerDialog.OnTimeSetListener mListener;


        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            final int hour, minute;
            if (mAlarm == null) {
                final Calendar c = Calendar.getInstance();
                hour = c.get(Calendar.HOUR_OF_DAY);
                minute = c.get(Calendar.MINUTE);
            } else {
                hour = mAlarm.hour;
                minute = mAlarm.minutes;
            }


            return new android.app.TimePickerDialog(getActivity(), R.style.TimePickerTheme,
                    mListener, hour, minute, DateFormat.is24HourFormat(getActivity()));
        }

然后TimePickerDialog实现是在 framework中的TimePickerDialog.java

    public TimePickerDialog(Context context, int themeResId, OnTimeSetListener listener,
            int hourOfDay, int minute, boolean is24HourView) {
        super(context, resolveDialogTheme(context, themeResId));

        mTimeSetListener = listener;
        mInitialHourOfDay = hourOfDay;
        mInitialMinute = minute;
        mIs24HourView = is24HourView;

        final Context themeContext = getContext();


        final TypedValue outValue = new TypedValue();
        context.getTheme().resolveAttribute(R.attr.timePickerDialogTheme, outValue, true);

        final LayoutInflater inflater = LayoutInflater.from(themeContext);
        final View view = inflater.inflate(R.layout.time_picker_dialog, null);
        setView(view);
        setButton(BUTTON_POSITIVE, themeContext.getString(R.string.ok), this);
        setButton(BUTTON_NEGATIVE, themeContext.getString(R.string.cancel), this);
        setButtonPanelLayoutHint(LAYOUT_HINT_SIDE);

        mTimePicker = (TimePicker) view.findViewById(R.id.timePicker);
        mTimePicker.setIs24HourView(mIs24HourView);
        mTimePicker.setCurrentHour(mInitialHourOfDay);
        mTimePicker.setCurrentMinute(mInitialMinute);
        mTimePicker.setOnTimeChangedListener(this);
    }
通过 搜索

\frameworks\base\core\res\res\layouttime_picker_material.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <include
        layout="@layout/time_picker_header_material"
        android:layout_width="match_parent"
        android:layout_height="106dp"
        android:layout_gravity="center" />
<!-- @dimen/timepicker_header_height -->
    <android.widget.RadialTimePickerView
        android:id="@+id/radial_picker"
        android:layout_width="wrap_content"
        android:layout_height="@dimen/timepicker_radial_picker_dimen"
        android:layout_gravity="center"
        android:layout_marginTop="@dimen/timepicker_radial_picker_top_margin"
        android:layout_marginStart="@dimen/timepicker_radial_picker_horizontal_margin"
        android:layout_marginEnd="@dimen/timepicker_radial_picker_horizontal_margin" />
</LinearLayout>
实际调用的又是include  time_picker_header_material.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
  ~ Copyright (C) 2013 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
  -->


<!-- This layout is duplicated in land/time_picker_material.xml, so any
     changes made here need to be manually copied over. -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/time_header"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:paddingStart="16dp"
                android:paddingEnd="16dp">


    <!-- The hour should always be to the left of the separator,
         regardless of the current locale's layout direction. -->
    <com.android.internal.widget.NumericTextView
        android:id="@+id/hours"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/separator"
        android:layout_alignBaseline="@+id/separator"
        android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
        android:background="@drawable/time_picker_editable_background"
        android:singleLine="true"
        android:ellipsize="none"
        android:gravity="right"
        android:focusable="true"
        android:nextFocusForward="@+id/minutes" />


    <TextView
        android:id="@+id/separator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="@dimen/timepicker_separator_padding"
        android:layout_marginRight="@dimen/timepicker_separator_padding"
        android:layout_centerInParent="true"
        android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
        android:importantForAccessibility="no" />


    <!-- The minutes should always be to the left of the separator,
         regardless of the current locale's layout direction. -->
    <com.android.internal.widget.NumericTextView
        android:id="@+id/minutes"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/separator"
        android:layout_alignBaseline="@+id/separator"
        android:textAppearance="@style/TextAppearance.Material.TimePicker.TimeLabel"
        android:background="@drawable/time_picker_editable_background"
        android:singleLine="true"
        android:ellipsize="none"
        android:gravity="left"
        android:focusable="true"
        android:nextFocusForward="@+id/am_label" />


    <!-- The layout alignment of this view will switch between toRightOf
         @id/minutes and toLeftOf @id/hours depending on the locale. -->
    <RadioGroup
        android:id="@+id/ampm_layout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/minutes"
        android:layout_alignBaseline="@+id/minutes"
        android:paddingStart="4dp"
        android:paddingEnd="4dp"
        android:orientation="vertical"
        android:baselineAlignedChildIndex="1">
        <RadioButton
            android:id="@+id/am_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dp"
            android:paddingRight="4dp"
            android:paddingTop="8dp"
            android:paddingBottom="8dp"
            android:layout_marginBottom="-8dp"
            android:textAppearance="@style/TextAppearance.Material.TimePicker.AmPmLabel"
            android:lines="1"
            android:ellipsize="none"
            android:focusable="true"
            android:background="?android:attr/selectableItemBackground"
            android:includeFontPadding="false"
            android:nextFocusForward="@+id/pm_label"
            android:button="@null" />
        <RadioButton
            android:id="@+id/pm_label"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingLeft="4dp"
            android:paddingRight="4dp"
            android:paddingTop="8dp"
            android:paddingBottom="8dp"
            android:textAppearance="@style/TextAppearance.Material.TimePicker.AmPmLabel"
            android:lines="1"
            android:ellipsize="none"
            android:focusable="true"
            android:background="?android:attr/selectableItemBackground"
            android:includeFontPadding="false"
            android:button="@null" />
    </RadioGroup>
</RelativeLayout>
在次确定了就是该两个布局文件。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值