Кнопка с изображением из списка слоев? - PullRequest
2 голосов
/ 29 октября 2011

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

В принципе, как вы делаете определенный рисунок в списке слоев кнопкой изображения?

Eclipse не помечает этот код какими-либо ошибками, пока он запускается, я получаю принудительное закрытие. Что мне не хватает?

Также -

Использую ли я findViewById для ссылки на ресурсы, даже если они находятся в списке слоев?

Принадлежит ли android:id в XML-файле тегу item или bitmap?

РЕДАКТИРОВАТЬ: Этот код я просто быстро собрал, чтобы продемонстрировать мою проблему. Я пытаюсь сделать активным кнопку только что последний нарисованный слой. Например, для пользовательского интерфейса я кладу кучу или графику друг на друга, последние два слоя будут кнопками, которые я хочу сделать активными. Это возможно? Или, может быть, есть лучший способ сделать то, что я пытаюсь сделать?

Спасибо.


layers.xml:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/android_red"
        android:gravity="center" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_green"
        android:gravity="center" />
    </item>
    <item android:id="@+id/blue_button" 
        android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/android_blue"
        android:gravity="center" />
    </item>
</layer-list>

main.xml:

<?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" >

    <ImageView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:src="@drawable/layers" />

</LinearLayout>

Активность:

public class LayoutTestActivity extends Activity implements OnClickListener {

      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      requestWindowFeature(Window.FEATURE_NO_TITLE);
      getWindow().setFlags(WindowManager.LayoutParams.FILL_PARENT,WindowManager.LayoutParams.FLAG_FULLSCREEN);

      setContentView(R.layout.main);

      ImageButton imgStartButton = (ImageButton) findViewById(R.id.blue_button);
      imgStartButton.setOnClickListener(this);


      }

    public void onClick(View v) {


    }
}

1 Ответ

1 голос
/ 29 октября 2011

Вы помещаете идентификатор не в список слоев, который можно нарисовать, а в изображение.

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/layers" 
    android:id="@+id/blue_button"/>

Для доступа к выдвижному ящику вы используете

ImageView imgStartButton = (ImageView) findViewById(R.id.blue_button);
imgStartButton.setOnClickListener(this);
imgStartButton.setBackgroundResource(R.drawable.layers);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...