Как я буду менять фон макетов - PullRequest
1 голос
/ 20 февраля 2012

Я изучаю Android и его сложный интерфейс и логику в Android так как он рекомендует способ XML. Я пытаюсь научиться этому. Мне нужна помощь в изменении фона

У меня есть два изображения в моем макете. Один HUD будет слева, а другой будет BG Есть много bg, но сейчас я только что поставил одну. Мне нужна помощь, как изменить эту bg, когда пользователь нажмет какую-то кнопку.

В моем main1.xml - есть 8 кнопок, так как пользователь нажимает на кнопку, соответствующую тому, что bg должен прийти в main2.xml

Вот код для main2.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- Horizontal Layout for HUD and Level Screen -->

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="horizontal" >

    <!-- Vertical Layout for the HUD which includes Object list,Timer, Pause and Menu Button -->

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/hud"
        android:orientation="vertical" >
    </LinearLayout>

    <!-- Relative Layout for the Level Screen -->

    <RelativeLayout
        android:id="@+id/GamePlayScreen"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:background="@drawable/bg" >                 
    </RelativeLayout>

</LinearLayout>

Это работает для одного BG, как сохранить тот же макет main2.xml и продолжать изменять BG w.r.t до нажатия кнопки

Ответы [ 3 ]

1 голос
/ 20 февраля 2012

После того, как вы надули свой вид, сделайте следующее:

myView.setBackgroundDrawable (d);

d - это ваш объект для рисования.

1 голос
/ 20 февраля 2012

создать xml, как это я сделал для 4 кнопок, добавить еще 4 для вашего требования

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" android:id="@+id/linear">

    <Button<
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/button4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

</LinearLayout>

активность для вышеупомянутого xml в активности, мы можем изменить фон, используя код Java

  package com.capo.searchrestaurant.activities;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;

    public class MainActivity extends Activity implements OnClickListener {
        /** Called when the activity is first created. */
       LinearLayout l;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
             l=(LinearLayout)findViewById(R.id.linear);
             Button btn1=(Button)findViewById(R.id.button1);
             Button btn2=(Button)findViewById(R.id.button2);
             Button btn3=(Button)findViewById(R.id.button3);
             Button btn4=(Button)findViewById(R.id.button4);
             btn1.setOnClickListener(this);
             btn2.setOnClickListener(this);
             btn3.setOnClickListener(this);
             btn4.setOnClickListener(this);
         //.......
        }

     @Override
     public void onClick(View v) {
      switch(v.getId())
      {
      case R.id.button1:
          l.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));
          break;
      case R.id.button2:
          l.setBackgroundDrawable(getResources().getDrawable(R.drawable.images));
          break;
      case R.id.button3:
          l.setBackgroundDrawable(getResources().getDrawable(R.drawable.ic_launcher));
          break;
      case R.id.button4:
          l.setBackgroundDrawable(getResources().getDrawable(R.drawable.images));
          break;
       //....for remaining buttons
      }

     }
    }
0 голосов
/ 20 февраля 2012

Вы можете попробовать view.setBackgroundResource (int) http://developer.android.com/reference/android/view/View.html#setBackgroundResource(int)

Сам не использовал, поэтому я не знаю, работает ли он

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