Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программная установка отступов
Для программной установки внутренних отступов у элементы вызыватся метод setPadding(left, top, right, bottom), в который передаются четыре значения для каждой из сторон. Для установки внешних отступов необходимо реализовать объект LayoutParams для того контейнера, который применяется. И затем вызвать у этого объекта LayoutParams метод setMargins(left, top, right, bottom): package com.example.eugene.layoutapp; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout relativeLayout = new RelativeLayout(this); TextView textView1 = new TextView(this); textView1.setBackgroundColor(0xFFBDBDBD); textView1.setText(" Hello Android 7" ); textView1.setTextSize(26); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, 200); // установка внешних отступов layoutParams.setMargins(30, 40, 50, 60); // устанавливаем размеры textView1.setLayoutParams(layoutParams); // установка внутренних отступов textView1.setPadding(30, 30, 30, 30); // добавляем TextView в RelativeLayout relativeLayout.addView(textView1); setContentView(relativeLayout); }}LinearLayout Контейнер LinearLayout представляет объект ViewGroup, который упорядочивает все дочерние элементы в одном направлении: по горизонтали или по вертикали. Все элемены расположены один за другим. Направление разметки указывается с помощью атрибута android: orientation. Если, например, ориентация разметки вертикальная (android: orientation=" vertical" ), то все элементы располагаются в столбик - по одному элементу на каждой строке. Если ориентация горизонтальная (android: orientation=" horizontal" ), то элементы располагаются в одну строку. Например, расположим элементы в горизонтальный ряд: Если бы мы указали для LinearLayout атрибут android: orientation=" vertical", то элементы размещались бы по вертикали: LinearLayout поддерживает такое свойство, как вес элемента, которое передается атрибутом android: layout_weight. Это свойство принимает значение, указывающее, какую часть оставшегося свободного места контейнера по отношению к другим объектам займет данный элемент. Например, если один элемент у нас будет иметь для свойства android: layout_weight значение 2, а другой - значение 1, то в сумме они дадут 3, поэтому первый элемент будет занимать 2/3 оставшегося пространства, а второй - 1/3. Если все элементы имеют значение android: layout_weight=" 1", то все эти элементы будут равномерно распределены по всей площади контейнера: <? xml version=" 1.0" encoding=" utf-8"? > < LinearLayout xmlns: android=" http: //schemas.android.com/apk/res/android" android: layout_width=" match_parent" android: layout_height=" match_parent" android: orientation=" vertical" > < TextView android: layout_width=" match_parent" android: layout_height=" 0dp" android: text=" Hello" android: background=" #e0e0e0" android: layout_weight=" 1" android: textSize=" 26sp" /> < TextView android: layout_width=" match_parent" android: layout_height=" 0dp" android: background=" #eeeeee" android: text=" Android" android: layout_weight=" 1" android: textSize=" 26sp" /> < TextView android: layout_width=" match_parent" android: layout_height=" 0dp" android: text=" Nougat" android: background=" #bdbdbd" android: layout_weight=" 1" android: textSize=" 26sp" /> < /LinearLayout>В данном случае LinearLayout имеет вертикальную ориентацию, поэтому все элементы будут располагаться сверху вниз. Все три элемента имеют значение android: layout_weight=" 1", поэтому сумма весов всех элементов будет равна 3, а каждый элемент получит по трети пространства в LinearLayout: При этом так как у нас вертикальный стек, то нам надо также установить для свойства layout_height значение 0dp. Если бы LinearLayout имел горизонтальную ориентацию, то для свойства layout_width надо было бы установить значение 0dp. Еще один атрибут android: weightSum позволяет указать сумму весов всех элементов. Например: <? xml version=" 1.0" encoding=" utf-8"? > < LinearLayout xmlns: android=" http: //schemas.android.com/apk/res/android" android: layout_width=" match_parent" android: layout_height=" match_parent" android: orientation=" vertical" android: weightSum=" 7" > < TextView android: layout_width=" match_parent" android: layout_height=" 0dp" android: text=" Hello" android: background=" #e0e0e0" android: layout_weight=" 1" android: textSize=" 26sp" /> < TextView android: layout_width=" match_parent" android: layout_height=" 0dp" android: background=" #eeeeee" android: text=" Android" android: layout_weight=" 3" android: textSize=" 26sp" /> < TextView android: layout_width=" match_parent" android: layout_height=" 0dp" android: text=" Nougat" android: background=" #bdbdbd" android: layout_weight=" 2" android: textSize=" 26sp" /> < /LinearLayout>LinearLayout здесь задает сумму весов равную 7. То есть все пространство по вертикали (так как вертикальная ориентация) условно делится на семь равных частей. Первый TextView имеет вес 1, то есть из этих семи частей занимает только одну. Второй TextView имеет вес 3, то есть занимает три части из семи. И третий имеет вес 2. Итоговая сумма составляет 6. Но так как LinearLayout задает вес 7, то одна часть будет свободна от всех элементов. |
Последнее изменение этой страницы: 2019-05-04; Просмотров: 236; Нарушение авторского права страницы