Создание пользовательского интерфейса - PullRequest
1 голос
/ 08 июля 2010

Как я могу сделать свой собственный интерфейс, определяющий мои свойства?

1 Ответ

4 голосов
/ 08 июля 2010

Есть три способа сделать это:

1. Использование стилей

Вы можете определить свои собственные стили, создав XML-файлы в каталоге res/values. Итак, давайте предположим, что вы хотите иметь красный и жирный текст, а затем вы создаете файл с таким содержанием:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyRedTheme" parent="android:Theme.Light">
    <item name="android:textAppearance">@style/MyRedTextAppearance</item>
  </style>
  <style name="MyRedTextAppearance" parent="@android:style/TextAppearance">
    <item name="android:textColor">#F00</item>
    <item name="android:textStyle">bold</item>
  </style>
</resources>

Вы можете назвать его так, как хотите, например, res/values/red.xml. Затем единственное, что вам нужно сделать, это использовать это представление в нужных вам виджетах, например:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
 style="@style/MyRedTheme"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is red, isn't it?"
    />
</LinearLayout>

Для дальнейшего ознакомления, вы можете прочитать эту статью: Понимание тем и стилей Android

2. Использование пользовательских классов

Это еще один возможный способ достижения этого, и он должен был бы предоставить ваш собственный TextView, который всегда устанавливает цвет текста на то, что вы хотите; например:

import android.content.Context;
import android.graphics.Color;
import android.util.AttributeSet;
import android.widget.TextView;
public class RedTextView extends TextView{
 public RedTextView(Context context, AttributeSet attrs) {
  super(context, attrs);
  setTextColor(Color.RED);
 }
}

Тогда вам просто нужно обработать его как обычный TextView в вашем XML-файле:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<org.example.RedTextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="This is red, isn't it?"
    />
</LinearLayout>

3. Создание темы

Я копирую пример, приведенный Стив Померой :

Создать styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="android:Theme">
    <item name="android:textViewStyle">@style/MyTextViewStyle</item>
</style>

<style name="MyTextViewStyle" parent="@android:style/Widget.TextView">
    <item name="android:textColor">#F00</item>
    <item name="android:textStyle">bold</item>
</style>
</resources>

Затем просто примените эту тему к своему приложению в AndroidManifest.xml:

<application […] android:theme="@style/MyTheme">

И все ваши текстовые представления будут по умолчанию соответствовать стилю, определенному в MyTextViewStyle (в данном случае, жирному и красному)!

<Ч />

Используете ли вы тот или иной выбор, зависит от ваших потребностей. Если единственное, что вы хотите сделать, это изменить внешний вид, то лучший подход - первый. С другой стороны, если вы хотите изменить внешний вид и добавить некоторые новые функции в свои виджеты, второй вариант - это путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...