2014-12-15 30 views
7

Cách bố trí select_dialog_singlechoice_material.xml từ nguồn plattform sử dụng android: checkMarkGravity = "bắt đầu" thuộc tính:Android checkMarkGravity thuộc tính của CheckedTextView (api 21)

<?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. 
--> 

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/text1" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:minHeight="?android:attr/listPreferredItemHeightSmall" 
android:textAppearance="?android:attr/textAppearanceMedium" 
android:textColor="?android:attr/textColorAlertDialogListItem" 
android:gravity="center_vertical" 
android:paddingStart="@dimen/alert_dialog_padding_material" 
android:paddingEnd="@dimen/alert_dialog_padding_material" 
android:checkMark="?android:attr/listChoiceIndicatorSingle" 
android:checkMarkGravity="start" 
android:ellipsize="marquee" /> 

Tuy nhiên tôi không thể sử dụng thuộc tính này trong dự án của tôi khi tôi nhận được lỗi sau:

Error:(15) No resource identifier found for attribute 'checkMarkGravity' in package 'android'

Có thể sử dụng thuộc tính này theo một cách nào đó không? Tôi đang biên soạn cho api 21, vì vậy đây sẽ không sao:

minSdkVersion 21 
targetSdkVersion 21 
+1

Nó không phải là thuộc tính công khai, do đó bạn sẽ không thể sử dụng nó. – alanv

Trả lời

0

Điều này là chính xác. Mã thực sự sử dụng nó, nhưng trình biên dịch không cho phép sử dụng nó. Mã này có nó ở nhiều nơi, và đây là nơi mà nó được khởi tạo:

public CheckedTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { 
    .... 
    mCheckMarkGravity = a.getInt(R.styleable.CheckedTextView_checkMarkGravity, Gravity.END); 

Và, một ví dụ về việc sử dụng trong các tập tin layout XML của Android, là trong "preference_material.xml":

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="?android:attr/listPreferredItemHeightSmall" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:textColor="?android:attr/textColorAlertDialogListItem" 
    android:gravity="center_vertical" 
    android:paddingStart="?attr/dialogPreferredPadding" 
    android:paddingEnd="?attr/dialogPreferredPadding" 
    android:checkMark="?android:attr/listChoiceIndicatorSingle" 
    android:checkMarkGravity="start" 
    android:ellipsize="marquee" /> 

tôi đã viết về vấn đề này here, hy vọng Google sẽ phát hành nó cho mọi người được sử dụng.

Các vấn đề liên quan