質問:既存の相対的なレイアウトに複数の相対的なレイアウトを追加する方法。私はアンドロイドDEVを学習し、自己の過程ではまだだとして追加する複数のレイアウトプログラム
は自分の無知を許してください、私の理解では、いくつかのギャップが残っています。
私の目標は、この画面を取ることです:Main Activityそして、複数のより小さい相対レイアウトを線形レイアウトに追加します。この場合、レイアウトの名前はrootWorkingLayoutです。現在、私のコードはここに表示されているように、より小さい相対レイアウトの1つを正常に追加します:Main Activity
私の目に見えない目標は、これらのうち4つまたは5つをそれぞれTextViews内の異なるデータで画面に表示することです(しかし、これは私の次のステップです)。これを達成する方法がわかりません。
主な活動Javaクラス:
public class rootActivity extends AppCompatActivity {
private Toolbar toolbar; //Toolbar Declaration
public LinearLayout rootWorkingLayout;
public static int i = 100; //previewCounter
//Main Function
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_root);
toolbar =(Toolbar) findViewById(R.id.toolBar);
rootWorkingLayout = (LinearLayout) findViewById(R.id.rootWorkingLayout);
setSupportActionBar(toolbar);
Bundle previewReceiver = getIntent().getExtras();
//If There is a Bundle, Process it
if(previewReceiver != null) {
newPreview(previewReceiver);
}
}
//Create Options Menu
@Override
public boolean onCreateOptionsMenu (Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return true;
}
//Track Options Menu
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_newReport: return true;
case R.id.action_history: return true;
case R.id.action_settings: return true;
default: return super.onOptionsItemSelected(item);
}
}
//Launch New Report Wizard
public void newReport (MenuItem menuItem)
{
Intent startNewReport = new Intent(getApplicationContext(), reportGeneratorActivity.class);
startActivity(startNewReport);//Go To Report Wizard
}
//Process New Preview
public void newPreview (Bundle previewReceiver) {
//Extract Strings from Bundle
String date = previewReceiver.getString("date");
String client = previewReceiver.getString("client");
String machine =previewReceiver.getString("machine");
String serialNum = previewReceiver.getString("serial");
//Create New Inflater
LayoutInflater previewInflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View previewLayout = previewInflater.inflate(R.layout.previewplate, null);
//Set Params
LinearLayout.LayoutParams previewParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
previewLayout.setLayoutParams(previewParams);// Add Params to Preview Plate
//Add previewLayout to rootWorkingLayout
previewLayout.setId(i);
//previewLayout.setID(i);//Assing new ID
i += 100;//Increment ID
rootWorkingLayout.addView(previewLayout);
//TODO: Configure Preview Plate
}
}ここで
は、主な活動のXMLです:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.gdt.user.testgdt.rootActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:elevation="4dp"/>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignStart="@+id/toolBar"
android:layout_below="@+id/toolBar"
android:id="@+id/rootWorkingLayout"
android:paddingTop="10dp"
android:weightSum="1">
</LinearLayout>
</RelativeLayout>
そして、ここで私は複数追加しようとしています相対的なレイアウトのレイアウトでありますrootWorkingLayout回:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/previewReportPlate"
android:background="#D1D1D1"
android:layout_below="@+id/previewReportPlateLbl"
android:layout_alignParentStart="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Client Name"
android:id="@+id/clientNamePlate"
android:textColor="#000000"
android:paddingLeft="6dp"
android:paddingTop="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"
android:layout_alignParentLeft="true"
android:layout_marginLeft="0dp"
android:layout_alignParentTop="true"
android:layout_marginTop="0dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Machine Type"
android:id="@+id/machineTypePlate"
android:textColor="#000000"
android:paddingLeft="6dp"
android:paddingTop="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"
android:layout_marginLeft="0dp"
android:layout_below="@+id/clientNamePlate"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Serial Number"
android:id="@+id/serialNumberPlate"
android:textColor="#000000"
android:paddingLeft="6dp"
android:paddingTop="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"
android:layout_marginLeft="0dp"
android:layout_below="@+id/machineTypePlate" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="Date"
android:id="@+id/datePlate"
android:layout_gravity="right"
android:textColor="#000000"
android:paddingRight="10dp"
android:layout_marginLeft="691dp"
android:layout_below="@+id/serialNumberPlate"
android:layout_alignParentEnd="true" />
</RelativeLayout>
私の現在の考えは、これがpreviewLayout.setIdの問題か、どこかで宣言する必要があるという問題です。おそらく私は、プロセスを経る最終的に何らかのループを構築する必要があると思っている。しかし、現時点では、複数のpreviewPlateレイアウトを追加する方法を理解する助けが必要だと思います。
ありがとうございます!
のようにそれを行うことができます。一般に、ビューにIDが必要な唯一の理由は、後で 'findViewById'を使って見つけることができるためです。 –
この問題を解決した後の私の次のステップは、個々に追加されたレイアウト内のテキストに影響を及ぼすことです。なぜそれぞれのIDを設定しようとしていたのですか? – VanDroid
私は、あなたが望むことを行うための「適切な」方法は、LinearLayoutの代わりにListViewを使用し、ビューを動的にロードするArrayAdapterを使用することだと思います。 –