2015-05-01 4 views
0

Итак, я новичок в разработке Android, и у меня есть проблема.Отображение линейной компоновки VS R.layout.activity main

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

ОДНАКО моя проблема в том, что у меня сейчас проблема, когда я пытаюсь загрузить новое действие, когда пользователь нажимает кнопку: 1) Я следовал за одним учебником, в котором я использовал XML для добавления кнопки и программа MAIN_активность для переключения на second_Activity с использованием setcontent(R.layout.main_Activity) и работает отлично.

2) Я также начал другой учебник, в котором я использовал setContent(layout1), где макет один на самом деле представляет собой LinearLayout, который вы добавляете (например), например кнопку, и программируете его для переключения второго действия, но я терпеть неудачу.

длинный рассказ короткий, используя эту строку setcontent(R.layout.main_Activity) переопределяет setContent(layout1) информацию, и я не могу их комбинировать. Кроме того, я не знаю, как сделать кнопку и нажать, чтобы переключать активность, кроме первого метода, я открыт для предложений.

package self.name.firstandroidprogram; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.text.InputType; 
import android.view.Gravity; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class MainActivity extends Activity { 
    LinearLayout layout1; 
    EditText number1Text; 
    EditText number2Text; 
    Button calcButton, switchButton; 


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

     layout1 = new LinearLayout(this); 
     number1Text = new EditText(this); 
     number2Text = new EditText(this); 
     calcButton = new Button(this); 

switchButton = (Button)findViewById(R.id.button1); 

     ////////////////////////////////////////////////////////////////////////BUTTON ACTIVITY SWTICH 
     switchButton.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MainActivity.this,Class2.class); 
       startActivity(intent); 
      } 
     }); 

     //////////////////////////////////////////////////////////////////////////// 






     answerText.setText("0"); 
     calcButton.setText("X"); 


     layout1.addView(number1Text); 
     layout1.addView(number2Text); 
     layout1.addView(calcButton); 
     layout1.addView(answerText); 
     layout1.addView(switchButton); 




     setContentView(R.layout.activity_main);// Works 

    // setContentView(layout1) failes when i run 




    } 

ответ

1

Я не уверен, но попробовать его

public class MainActivity extends Activity { 
LinearLayout layout1; 
EditText number1Text; 
EditText number2Text; 
Button calcButton, switchButton; 


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

    layout1 = new LinearLayout(this); 

    // Do it before adding views in it. 
    setContentView(layout1); 

    number1Text = new EditText(this); 
    number2Text = new EditText(this); 
    calcButton = new Button(this); 

switchButton = (Button)findViewById(R.id.button1); 

    ////////////////////////////////////////////////////////////////////////BUTTON ACTIVITY SWTICH 
    switchButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this,Class2.class); 
      startActivity(intent); 
     } 
    }); 

    //////////////////////////////////////////////////////////////////////////// 






    answerText.setText("0"); 
    calcButton.setText("X"); 


    layout1.addView(number1Text); 
    layout1.addView(number2Text); 
    layout1.addView(calcButton); 
    layout1.addView(answerText); 
    layout1.addView(switchButton); 




// setContentView(R.layout.activity_main);// Works 






} 
+0

Sorry не работает. – user3676224

0

Если вы создаете вид программно вы должны установить каждый вид LayourParameters с помощью view.setLayoutParams()

Попробуйте

 layout1 = new LinearLayout(this); 

     EditText number1Text = new EditText(this); 
     EditText number2Text = new EditText(this); 
     Button calcButton = new Button(this); 

     calcButton.setText("X"); 
     //impt : width=MATCH_PARENT and height=MATCH_PARENT 
     layout1.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
     layout1.setOrientation(LinearLayout.VERTICAL); //setting LL orientation 

     layout1.addView(number1Text); 
     layout1.addView(number2Text); 
     layout1.addView(calcButton); 


     setContentView(layout1); 

Happy_Coding:) ...

+0

Thats всегда полезно, спасибо! – user3676224

0

Вы можете установить LinearLayout в качестве основного макета. Когда пользователь нажимает на кнопку switch, вам нужно установить фон на LinearLayout

activity_main.xml:

<LinearLayout 
android:layout_height="match_parent" 
android:layout_width="match_parent" 
android:id="@+id/main" 
android:background="@drawable/default" 
> 

    <!-- put your Button here switch button --> 

</LinearLayout> 

MainActivity.java:

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

    setContentView(R.layout.activity_main); 

    switchButton = (Button)findViewById(R.id.button1); 
    LinearLayout lv1 = (LinearLayout) findViewById(R.id.main); 

    switchButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
       // we have reference of LinearLayout as lv1 
       // we will change background of lv1 here when user clicks 
       lv1.setBackgroundResource(<your_new_background_image_id>); 
     } 
    }); 

<your_new_background_image_id> могут быть выбраны из /res/drawable/ папка. Вы сохраняете 10-20 изображений небольшого размера в drawable и переименовать их с похожим именем т.е. image1, image2 и т.д.

При установке их в качестве фона, вы можете закодировать как:

int[] imageArray = {R.drawable.image1, R.drawable.image2,...} 

lv1.setBackgroundResource(imageArray[(i++)%10]); 
+0

Я должен заменить relativelayout linearlayout в xml праве? – user3676224

+0

Я понял. благодаря :) – user3676224

Смежные вопросы