Nano Hash - криптовалюты, майнинг, программирование

Пользовательский вид Android - раздел с заголовком для группировки элементов, лучший подход

Мне нужно сгруппировать представления в разделах по действиям и описать разделы по заголовкам, поэтому я создал собственное представление, как показано ниже:

public class Section extends LinearLayout {
    public Section(Context context) {
        this(context, null);
    }

    public Section(Context context, AttributeSet attrs) {
        super(context, attrs);
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Section, 0, 0);
        String title = a.getString(R.styleable.Section_textHeader);
        a.recycle();
        setOrientation(LinearLayout.VERTICAL);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        inflater.inflate(R.layout.section_header, this, true);
        TextView titleTextView = (TextView) getChildAt(0);
        titleTextView.setText(title);
    }
}

и я использую это представление, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res/eu.szwiec"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="8dip" >

    <eu.szwiec.Section
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        custom:textHeader="Sample Header" >

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="left|center_vertical"
            android:text="go to second activity" />
    </eu.szwiec.Section>

</LinearLayout>

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

  1. LinearLayout в LinearLayout не оптимален
  2. Я должен всегда объявлять в разделе android:layout_width и android:layout_height

Есть ли у Вас идеи по лучшему решению этой проблемы? или вышеуказанный подход является лучшим?


Ответы:


1

1) Вам не нужен внешний LinearLayout. Просто объявите отступы в своем разделе в xml и не забудьте поставить туда xmlns:android="http://schemas.android.com/apk/res/android".

2) Вам нужно объявить ширину и высоту. Я считаю, что вы можете использовать стили, но я не думаю, что это подходит для атрибутов layout_xxx.

14.04.2013
  • 1) Мой образец был простым и неточным, я использую много разделов в работе, поэтому, вероятно, мне нужен какой-то внешний макет. 2) Хорошо, я мечтал о чистом объявлении типа тега PreferenceCategory в андроиде, но, вероятно, это невозможно для просмотра, почему стили не подходят для атрибутов layout_xxx? 15.04.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..