Помогите с моим первым Android UI - PullRequest
1 голос
/ 12 августа 2011

У меня проблемы с разработкой пользовательского интерфейса для моей первой "хромой" игры.

Вот скриншот.

screen shot

Я используюLinearLayout, который содержит TableLayout с TableRows.Кажется, что так утомительно и трудно контролировать положение элементов.

Например, чтобы все выстроилось в линию, я вставил пустые TextViews, чтобы «вытолкнуть» другие элементы на место.

Я также добавил отступы к кнопкам, чтобы получить желаемый размер.

Есть ли лучший способ сделать это?

Спасибо!

Ответы [ 3 ]

9 голосов
/ 12 августа 2011

Вы определенно хотите использовать для этого Относительный макет .

Вы сможете указать расположение каждой кнопки относительно других кнопок.

АбсолютноИЗБЕГАЙТЕ разрабатывать свои интерфейсы так, как вы в настоящее время пытаетесь.TextViews будут разных размеров для разных дистрибутивов Android и, скорее всего, будут выглядеть только на том устройстве, на котором вы их тестировали.

EDIT:

Если вам нужно пустое место, используйте атрибут XMLandroid:weightSum="x" в родительском представлении android: layout_weight = "y" в дочернем.Это заставит ребенка занимать (г / х) пространство, отведенное ему в layout_height и layout_width.

РЕДАКТИРОВАТЬ:

Я думаю, что еще один хороший совет для этого будетиспользуйте отдельные макеты для таких вещей, как ваши кнопки «направления».Вы сможете управлять тем, где они находятся на экране, как группа, вместо того, чтобы перемещать каждого по отдельности.

1 голос
/ 12 августа 2011

Вы должны использовать RelativeLayout для решения этой проблемы.Однажды я сталкивался с подобной проблемой ...

Я не использовал кнопки Android по умолчанию, потому что у меня были свои изображения для поведения при нажатии и без нажатия ...

Предположим, вы хотите разместить восточную «кнопку».Вы можете использовать такую ​​функцию, как:

public void addEastImageView(RelativeLayout myBackgroundLayout, ImageView center, ImageView east, int leftPadding, int topPadding, int rightPadding, int bottomPadding){
        RelativeLayout.LayoutParams rightSide = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        rightSide.addRule(RelativeLayout.RIGHT_OF, center.getId());

        east.setPadding(leftPadding, topPadding, rightPadding, bottomPadding);
        myBackgroundLayout.addView(east, rightSide);
}

ImageView с именем "center" будет той, которую вы назвали "i" на своем изображении.Параметры заполнения позволят вам контролировать расстояние между ImageViews.Вы можете создать такие функции, как эта, чтобы добавить кнопки «запад», «юг» и «север»: вам просто нужно изменить параметр «RelativeLayout.RIGHT_OF» на «RelativeLayout.LEFT_OF», «RelativeLayout.BELLOW» и «RelativeLayout.ABOVE "соответственно.

Если вам нужно какое-то поведение для ваших ImageViews, вам просто нужно установить его в setOnClickListener .Затем вы можете изменить «изображение» вашего ImageView с помощью setBackgroundResource , например, и установить другие логические поведения, которые вы хотите.

Надеюсь, это поможет: D

0 голосов
/ 12 августа 2011

Используйте AbsoluteLayout - он позволяет вам точно указать, куда поместить каждый элемент

http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<Button
    android:layout_width="188px"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_x="126px"
    android:layout_y="361px"
    />
<Button
    android:layout_width="113px"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_x="12px"
    android:layout_y="361px"
    />

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