2014-12-15 10 views
7

Il layout select_dialog_singlechoice_material.xml dalla sorgente plattform utilizza l'androide: checkMarkGravity = "start" attributo:checkMarkGravity Android di 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" /> 

Tuttavia io sono in grado di utilizzare questo attributo nel mio progetto come ho il seguente errore:

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

È possibile utilizzare questo attributo in qualche modo? Sto eseguendo la compilazione di api 21, quindi questo dovrebbe essere a posto:

minSdkVersion 21 
targetSdkVersion 21 
+1

Non è un attributo pubblico, quindi non sarà possibile utilizzarlo. – alanv

risposta

0

Questo è corretto. Il codice effettivamente lo usa, ma il compilatore non consente di usarlo. Il codice ha in più luoghi, e qui è dove viene inizializzato:

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

E, un esempio di utilizzo di file di layout XML di Android, è in "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" /> 

I Ho scritto su questo numero here, sperando che Google lo rilascerà affinché tutti possano essere utilizzati.