Пользовательское представление, содержащее пользовательские представления с пользовательскими атрибутами и стилями.

Нормальный стиль для конкретного вида:

<style name="Theme" parent="@android:style/Theme">
     <item name="android:buttonStyle">@style/Button</item>
     <item name="customDialogStyle">@style/CustomDialogStyle</item>
</style>

<style name="Button" parent="@android:style/Widget.Button">
      <item name="android:textColor">#000000</item>
      <item name="android:background">#FFFFFF</item>
</style>

<style name="Button.Dark">
      <item name="android:textColor">#FFFFFF</item>
      <item name="android:background">#000000</item>
</style>

<style name="CustomDialogStyle">
      <item name="android:buttonStyle">@style/Button.Dark</item>
</style>

Некоторые пользовательские атрибуты:

<attr name="customDialogStyle" format="reference" />

<declare-styleable name="CustomDialog">
     <attr name="android:buttonStyle" />
</declare-styleable>

Теперь с моим CustomView:

public class CustomDialogContainer extends LinearLayout
{

     public CustomDialogContainer(Context c) { this(c, null); }

     public CustomDialogContainer(Context c, AttributeSet a) { this(c, a, R.attr.customDialogStyle); }

     public CustomDialogContainer(Context c, AttributeSet a, int d) { super(c, a, d); init(c, a, d); }

     private void init(Context c, AttributeSet a, int d)
     {

          final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.CustomDialog, d, R.style.CustomDialogStyle);

          // tried getInteger and some others too
          int style = a.getResourceId(R.styleable.CustomDialog_buttonStyle, android.R.attr.buttonStyle);

          a.recycle();

          Button bOK = new Button(c, attrs, style);
          // and tried
          Button bCancel = new Button(c, null, style);
          // even
          Button anyOne = new Button(new ContextThemeWrapper(c, style));

          addView(bOK);
          addView(bCancel);

     }

}

Это самая базовая часть моего DialogContainer, которая имеет все основы (значок, заголовок, отмена, ОК, контейнер для других представлений). Но то, что я, очевидно, пытаюсь сделать, это применить другой стиль по сравнению со ссылками на кнопки на DialogContainer.

Неважно, где это. Если я создам какую-либо другую ViewGroup или около того и захочу добавить в нее некоторые свои собственные CustomViews, если пользовательские стили не могут быть выполнены таким образом, я понятия не имею, что они думали при создании Android.

Деятельность с темными кнопками и ярким диалогом с яркими кнопками - не может быть слишком странным? Альтернативой является добавление, скажем, всех атрибутов по отдельности: background, textColor, textAppearance и так далее. Я думал, что программисты хотят быть эффективными.

Если кто-то знает, как это сделать, я был бы признателен.

0 ответов

Другие вопросы по тегам