Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
FazonFix
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 26
#1

GridView: выравнивание колонок по центру - Android

04.03.2014, 10:22. Просмотров 1722. Ответов 9
Метки нет (Все метки)

Код MainActivity.java:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class MainActivity extends Activity {
    
    String[] data = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"};
    
    GridView gridView1;
    ArrayAdapter<String> adapter;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
 
        adapter = new ArrayAdapter<String>(this, R.layout.item, R.id.tvText, data);
        gridView1 = (GridView) findViewById(R.id.gridView1);
        gridView1.setAdapter(adapter);
               adjustGridView();
        
    }
    
    private void adjustGridView() {
        gridView1.setNumColumns(5);
        tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
      }
}
Код activity_main.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
 
    <GridView
        android:id="@+id/gridView1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:numColumns="5"
        android:stretchMode="columnWidth" >
 
    </GridView>
 
</RelativeLayout>
Код item.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?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:background="@drawable/rect"
    android:orientation="vertical">
 
<TextView
    android:id="@+id/tvText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:minHeight="40dp"
    android:textSize="70sp"
    android:text="">
</TextView>
 
</LinearLayout>
Как, собственно, сделать так, чтобы текст, расположенный внутри колонки / ячейки был по центру, а не справа? Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 10:22     GridView: выравнивание колонок по центру
Посмотрите здесь:

Image in GridView Android
GridView Android
GridView и ViewPager Android
Android GridView и обрабочик
Работа с GridView Android
Android GridView в фокусе
Android NavigationView с GridView
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
04.03.2014, 10:57     GridView: выравнивание колонок по центру #2
Цитата Сообщение от FazonFix Посмотреть сообщение
Как, собственно, сделать так, чтобы текст, расположенный внутри колонки / ячейки был по центру, а не справа?
Замените содержимое файла item.xml на:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/rect" >
 
   <TextView
        android:id="@+id/tvText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:minHeight="40dp"
        android:textSize="70sp" />
 
</RelativeLayout>
FazonFix
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 26
04.03.2014, 14:10  [ТС]     GridView: выравнивание колонок по центру #3
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/rect" >

<TextView
android:id="@+id/tvText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:minHeight="40dp"
android:textSize="70sp" />

</RelativeLayout>
К сожалению, это не помогло. Текст как был слева, так и остался. Вот скриншот:
s52 .radikal .ru/i138/1403/3b/7f0291d0772e.png (пробелы убрать).

Быть можно нужно внутри самой программы назначить так, чтобы TextView выравнивался по центру внутри ячейки?
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
04.03.2014, 14:34     GridView: выравнивание колонок по центру #4
Цитата Сообщение от FazonFix Посмотреть сообщение
К сожалению, это не помогло.
Может быть это проблема эмулятора? На настоящем устройстве (Android 4.1) всё работает прекрасно:
GridView: выравнивание колонок по центру
FazonFix
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 26
05.03.2014, 17:33  [ТС]     GridView: выравнивание колонок по центру #5
Может быть это проблема эмулятора? На настоящем устройстве (Android 4.1) всё работает прекрасно
К сожалению, проблема осталась. Пробовал на реальном устройстве (планшет, не знаю какой фирмы) и на эмуляторе - всё равно выравнивание по левому краю. Может быть вы мне что-то не дописали (в исходном коде программы, а не в XML, например, т. к. я использую адаптер и вывожу из массива данные) или есть другие способы?
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
05.03.2014, 20:38     GridView: выравнивание колонок по центру #6
Цитата Сообщение от FazonFix Посмотреть сообщение
Может быть вы мне что-то не дописали
Исключено, вот только сейчас проделал все с нуля на другом компьютере. ну разве что закомментировал строчку
Java
1
tvText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
но она тут не при чем. На всякий случай я приложил архив со своим (точнее вашим ) проектом. В папке bin вы можете найти уже готовый apk файл чтоб проверить побыстрому.
OneMoreTest.rar
FazonFix
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 26
06.03.2014, 14:18  [ТС]     GridView: выравнивание колонок по центру #7
Так и не проверил твой проект. Но меня больше интересует другая вещь: у меня в item.xml вылазит предупреждение. Что это может быть и как от этого избавиться?
Миниатюры
GridView: выравнивание колонок по центру  
angryrobot
Командир зеленых роботов
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 564
06.03.2014, 14:26     GridView: выравнивание колонок по центру #8
Цитата Сообщение от FazonFix Посмотреть сообщение
Что это может быть и как от этого избавиться?
Предупреждение потому, что этих двух строчек тут быть не должно. Ваш TextView находится внутри контейнера LinearLayout, а он не поддерживает выравнивание содержащихся внутри него элементов, по центру
FazonFix
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 26
07.03.2014, 16:32  [ТС]     GridView: выравнивание колонок по центру #9
Наконец-то сделал. Случайным образом ввёл параметр android:layout_gravity в TextView. Выкладываю, если кто-то будет страдать таким же вопросом.

Содержимое item.xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#18A608" >
    
<TextView
    android:id="@+id/tvText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:minHeight="40dp"
    android:textSize="30sp" >
</TextView>
 
</LinearLayout>

------------------------------------------------------------

И ещё один вопрос:

Вот у меня есть матрица смежности, сделанная посредством GridView, размером 3x3. Как сделать так, чтобы когда я нажимаю на ячейку с id равным 2 (если размер 3x3, то это первый ряд, третья ячейка), то она загоралась не стандартным серым цветом, а, к примеру, зелёным, а все остальные - синим?

В теге LinearLayout файла item.xml есть параметр android:background со значением #18A608:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#18A608" >
    
<TextView
    android:id="@+id/tvText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:minHeight="40dp"
    android:textSize="30sp" >
</TextView>
 
</LinearLayout>
Но при таком случае будут все ячейки загораться зелёным цветом, причём они будут зелёным цветом всегда, даже если не трогать пальцем экран. Как решить мою проблему?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2014, 18:32     GridView: выравнивание колонок по центру
Еще ссылки по теме:

Какой тег отвечает за выравнивание по центру текста? Android
Android Не перерисовывается GridView
Не заполняется gridview Android
Android Обновление gridView
Android Разметка GridView

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NiRamz
211 / 211 / 16
Регистрация: 26.12.2010
Сообщений: 691
07.03.2014, 18:32     GridView: выравнивание колонок по центру #10
Цитата Сообщение от FazonFix Посмотреть сообщение
android:background="#18A608
код зеленого цвета )
Yandex
Объявления
07.03.2014, 18:32     GridView: выравнивание колонок по центру
Ответ Создать тему
Опции темы

Текущее время: 11:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru