[JAVA - Android] Border und Zellengröße Festlegen

  • Guten Tag , ich stehe gerade beim entwickeln meiner Spieleapp auf dem Schlauch und zwar möchte ich vom Skript aus eine Tabelle erstellen und dieser einen Rand geben.
    Es geht mir hier , daher erwähne ich es nochmal, dass eine Tabelle aus der MainActivity Klasse erstellt wird nicht regulär über die .xml ( bei mir activity_main.xml) im layout Ordner.


    Ich bezweifel das jemand den Code davon benötigt, dennoch poste ich ihn mal


    um das ganze nochmals zu visualisieren , ich möchte das gern solch ein Raster erstellen:




    und so möchte ich das gern haben



    Caglar
    Hättest du mir eventuell einen Link oder einen kleinen Anstoß, wie ich dies umsetzen kann ?

  • Du kannst ein TableLayout nutzen, worin sich die ImageButtons befinden.
    Ich habe dir mal ein Beispiel in XML erstellt, vielleicht hilft es dir.
    Wenn du Probleme mit der Hintergrundfarbe und dem Rand hast, kannst du dich an mich wenden.


  • Lösung:


    direkt die LayoutParams zuschreiben und danach bei addView angeben


    BSP:


    Code
    TableLayout.LayoutParams tableLayoutParams = new TableLayout.LayoutParams();
            TableLayout tableLayout = new TableLayout(this);
            tableLayout.setBackgroundColor(Color.argb(255, 35, 35, 35));
            tableLayout.setBottom(20);
    
            TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams();
            tableRowParams.setMargins(2, 2, 2, 2);
            tableRowParams.weight = 1;


    Code
    rows.addView(btnLines[i][x],tableRowParams);


    Danke, aber wie bereits erwähnt wollte ich dies so nicht machen, da ich den Buttons so denk ich zumindestens kein OnClickListener zuweißen kann , da ich die ganzen Buttons in einem Array habe,
    aber nun gut das Problem hab ich schon gelöst, aber du kannst mir nicht zufällig sagen, was das hier ist für ein schwarzer Strich (Balken) ist, bei der Tabellenzelle ?





    oder kennst du vllt eine gute anlaufstelle oder eine übersichtliche Dokumentation zur Android Entwicklung, ich hab gestern angefangen mit der Appentwicklung und kom mir gerade vor wie der größte Noob xD mit meinen Fragen.

  • Main_Activity


    Code
    package de.wg2a.wins;import android.app.Activity;import android.content.Intent;import android.graphics.Color;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.widget.ImageButton;import android.widget.LinearLayout;import android.widget.TableLayout;import android.widget.TableRow;import android.view.View;public class MainActivity2 extends Activity {	private ImageButton[][] btnLines = new ImageButton[8][8];	private Game gameFunction;	private int Player = 1;	private boolean GameState = true;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main2);        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.LinearLayout2);        gameFunction = new Game();        TableLayout table = new TableLayout(this);         table.setStretchAllColumns(true);        table.setShrinkAllColumns(true);        table.setBackgroundColor(Color.argb(255, 35, 35, 35));        table.setBottom(20);        TableLayout.LayoutParams tableLayoutParams = new TableLayout.LayoutParams();        TableLayout tableLayout = new TableLayout(this);        tableLayout.setBackgroundColor(Color.argb(255, 35, 35, 35));                TableRow.LayoutParams tableRowParams = new TableRow.LayoutParams();        tableRowParams.setMargins(2, 2, 2, 2);        tableRowParams.weight = 1;            for(int i = 0, y = 0; i != 8; ++i){        	 TableRow rows = new TableRow(this);             rows.setBackgroundColor(Color.argb(255, 35, 35, 35));       	         	 for(int x = 0; x != 8; ++x){        		 	btnLines[i][x] = new ImageButton(this);        		 	btnLines[i][x].setImageResource(R.drawable.gamefield);        		 	btnLines[i][x].setBackgroundColor(Color.argb(255, 20, 20, 20));         		 	btnLines[i][x].setOnClickListener(mLineOnClickListener);        		 	btnLines[i][x].setTop(10);        		 	btnLines[i][x].setTag(y);        		 	btnLines[i][x].setId(y);               	        rows.addView(btnLines[i][x],tableRowParams);        	        ++y;        	 }        	 table.addView(rows,tableLayoutParams);     	         }        linearLayout.addView(table);        setContentView(linearLayout);    }    private View.OnClickListener mLineOnClickListener = new View.OnClickListener() {    	@Override    	public void onClick(View v) {     		if(GameState == true){		        int selected_item = (Integer) v.getTag();		        ImageButton id = gameFunction.getImgId(btnLines,selected_item, Player);		        if(id != null) {		        	int playerWins = gameFunction.playerHas4InARow(Player);		        	if(playerWins != 0) {		        		System.out.println("gewonnen Spieler:" + Player);					    Intent intent = new Intent(MainActivity2.this,MainActivity.class);		                startActivity(intent);		        					        } else {			        	if(Player == 1) {			        		Player = 2;			        		id.setImageResource(R.drawable.red);			        	} else {			        		Player = 1;			        		id.setImageResource(R.drawable.green);				        	}				        }    			}    		}    	}    };      @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}


    activity_main2.xml

    Code
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/LinearLayout2"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/backgroundColor"    android:orientation="vertical"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context="de.wg2a.wins.MainActivity" >    <TextView        android:id="@+id/tvxTimer"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:text="@string/info_text"        android:textColor="@color/fontColor"         /></LinearLayout>


    string.xml (Color Referenzen sind hier enthalten)


    XML
    <?xml version="1.0" encoding="utf-8"?><resources>    <string name="app_name">4Wins</string>   	<string name="logoDescription">4Wins</string>    <string name="btxStartOnePlayerText">Ein Spieler</string>    <string name="btxStartTwoPlayerText">Zwei Spieler</string>    <string name="info_text">Spielfeld</string>          <string name="action_settings">Settings</string>    <color name="buttonColor">#e86d66</color>        <color name="backgroundColor">#232323</color>    <color name="fontColor">#e86d66</color>    <color name="buttonTextColor">#fafef0</color>    </resources>



    //edit Problem behoben, es lag der größe der Bilder, ich hab jetzt das Quadrat geändert zu einem Kreis, was natürlich auch möglich wäre , ist die größe des Buttons fest vorzugeben

  • Wieso sind die Farben denn in der strings.xml?
    Hättest doch eine bessere Übersicht, wenn du es in die colors.xml packst.


    Das liegt daran das ich "damals" die string.xml kopiert und den namen geändert habe in color, da wurden die Farben nicht erkannt, jedoch ist mir bereits bewusst geworden das dies ohne Probleme mit dem hinzufügen eines neuen Android .xml Files funktioniert ^^.


    Jedoch bei den paar Farben würde es auch kein Unterschied machen.