2014-12-15 13 views
7

Das select_dialog_singlechoice_material.xml Layout aus der Plattform Quelle verwendet die Android: checkMarkGravity = "start" Attribut:Android checkMarkGravity Attribut 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" /> 

aber ich bin nicht auf dieses Attribut in meinem Projekt zu verwenden, wie bekomme ich den folgenden Fehler:

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

Ist es möglich, dieses Attribut in irgendeiner Weise zu verwenden? Ich bin der Zusammenstellung für api 21, so sollte dies in Ordnung sein:

minSdkVersion 21 
targetSdkVersion 21 
+1

Es ist kein öffentliches Attribut, daher können Sie es nicht verwenden. – alanv

Antwort

0

Das ist richtig. Der Code verwendet es tatsächlich, aber der Compiler erlaubt es nicht, es zu verwenden. Der Code hat es an mehreren Stellen, und hier, wo es initialisiert wird:

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

Und ein Beispiel für den Einsatz in Android Layout XML-Dateien, ist 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 habe über dieses Problem here geschrieben, in der Hoffnung, dass Google es veröffentlichen wird, damit jeder benutzt wird.

Verwandte Themen