如何最小化我的相同xmls的数量,但仍然可以按照它应该的方式运行?

时间:2014-07-15 18:22:31

标签: android xml eclipse

我的应用程序有多个.xmls,它们的设计和功能是相同的,唯一的区别是我将在每个设计中输入不同的数据,这意味着我将在我的数据库中拥有一堆表。我担心的是,因为我的xmls的设计和功能是相同的,我可以用什么方法最小化我的xml数量,但仍然可以在我的数据库中存储不同的数据?

这是我的主要活动,所以你可以想象它的样子。在每个按钮中还有10个按钮可以打开我即将创建的特定xmls。

package com.whowantstobeanengineer.systemproject;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Intent;
import android.widget.*;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

//BUTTONS START//        

        Button btn_lvl_1 = (Button) findViewById(R.id.btn_lvl_1);

        btn_lvl_1.setOnClickListener (new View.OnClickListener() {
            public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(),level_1_subject_selection.class);
                startActivity(i);
            }
        });

        Button btn_lvl_2 = (Button) findViewById(R.id.btn_lvl_2);

        btn_lvl_2.setOnClickListener (new View.OnClickListener() {
            public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(),level_2_subject_selection.class);
                startActivity(i);
            }
        });

        Button btn_lvl_3 = (Button) findViewById(R.id.btn_lvl_3);

        btn_lvl_3.setOnClickListener (new View.OnClickListener() {
            public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(),level_3_subject_selection.class);
                startActivity(i);
            }
        });

        Button btn_lvl_4 = (Button) findViewById(R.id.btn_lvl_4);

        btn_lvl_4.setOnClickListener (new View.OnClickListener() {
            public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(),level_4_subject_selection.class);
                startActivity(i);
            }
        });

        Button btn_lvl_5 = (Button) findViewById(R.id.btn_lvl_5);

        btn_lvl_5.setOnClickListener (new View.OnClickListener() {
            public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(),level_5_subject_selection.class);
                startActivity(i);
            }
        });

//BUTTONS END//

    }
}

这里是主要的xml。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp"
tools:context="com.whowantstobeanengineer.systemproject.MainActivity"
tools:ignore="MergeRootFrame" >

<ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">
         <LinearLayout 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:orientation="vertical">

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="25dp"
    android:layout_marginLeft="100dp"
    android:layout_marginTop="20dp"
    android:layout_weight="0.0"
    android:text="@string/level_menu_text_view"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/btn_lvl_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="120dp"
    android:layout_marginTop="20dp"
    android:text="@string/level_1_text_button" />

<Button
    android:id="@+id/btn_lvl_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="120dp"
    android:layout_marginTop="20dp"
    android:text="@string/level_2_text_button" />

<Button
    android:id="@+id/btn_lvl_3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="120dp"
    android:layout_marginTop="20dp"
    android:text="@string/level_3_text_button" />

<Button
    android:id="@+id/btn_lvl_4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="120dp"
    android:layout_marginTop="20dp"
    android:text="@string/level_4_text_button" />

<Button
    android:id="@+id/btn_lvl_5"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="120dp"
    android:layout_marginTop="20dp"
    android:text="@string/level_5_text_button" />
</LinearLayout>
  </ScrollView>

在leve_1_subject_select.xml下是这个。你能想象我有5个级别(5个相同的xmls)加上10个科目(每个级别10个相同的xmls)给我50 xmls来管理。

<?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:orientation="vertical"
    android:padding="5dp" >

    <ScrollView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
             <LinearLayout 
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="25dp"
    android:layout_marginLeft="125dp"
    android:layout_marginTop="20dp"
    android:layout_weight="0.0"
    android:text="@string/level_1_menu_text_view"
    android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/btn_lvl1_subj_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_1_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_2_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_3_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_4_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_5_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_6"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_6_text_button" />

    <Button
        android:id="@+id/btn_lvl1_subj_7"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_7_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_8"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_8_text_button" />

     <Button
        android:id="@+id/btn_lvl1_subj_9"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_9_text_button" />

    <Button
        android:id="@+id/btn_lvl1_subj_10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="110dp"
        android:layout_marginTop="20dp"
        android:text="@string/subject_10_text_button" />

        </LinearLayout>
      </ScrollView>

</LinearLayout>

我希望我只能为所有级别提供至少1 xml,并且对于所有级别只能提供1 xml,但仍可以按照我希望的方式运行。还有一件事,我的每个xml都有自己的类,所以最小化我的xml计数也会最小化我的类计数,这是好的。我不知道是否可能,但我很高兴听到你们的建议。提前谢谢!

2 个答案:

答案 0 :(得分:0)

删除XML layouts上的公共部分,并将该UI部分保存在单独的布局文件中,并在必要时将其包含在主布局中。

<include layout="layout id" /> 

答案 1 :(得分:0)

创建与第一个相同但具有不同名称的新活动。对setContentView中的活动使用相同的main_layout.xml文件,并确保活动中的代码使用与xml中相同的按钮名称。