Ich versuche, vier dynamisch generierte Schaltflächen anzupassen, um gleichmäßigen Speicherplatz in einem GridLayout zu belegen. Ich habe alles versucht, was ich nur kann, von der Einstellung LayoutParams
auf die onMeasuredWidth
, aber ich kann einfach nicht erreichen, was ich will.Wie mache ich, dass dynamisch generierte Schaltflächen in einem GridLayout in Android sogar Platz beanspruchen?
This ist das, was ich will, und das finden, was ich
Ich habe am Ende immer sah in this und viele andere, keiner von ihnen eine Lösung vorgeschlagen.
Im Anschluss an die XML (content.xml) gehen Sie bitte wie GridLaayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="accordiontry.juspay.accordiontry.MainActivity"
tools:showIn="@layout/activity_main"
android:orientation="vertical">
<GridLayout
android:id="@+id/gridLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="2">
</GridLayout>
</LinearLayout>
Und finden Sie die MainActivity.java
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.webkit.WebView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.GridLayout;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private GridLayout gridLayout;
private final int NumOfCol = 2;
private final int NumOfRows = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
init();
generateView();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void init()
{
gridLayout = (GridLayout) findViewById(R.id.gridLayout);
gridLayout.setBackgroundColor(Color.BLUE);
gridLayout.measure(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
public void generateView()
{
Button btn1 = new Button(this);
Button btn2 = new Button(this);
btn1.setText("BUTTON 1");
btn1.setWidth(gridLayout.getMeasuredWidth());
gridLayout.addView(btn1);
btn2.setText("BUTTON 2");
btn2.setWidth(gridLayout.getMeasuredWidth());
gridLayout.addView(btn2);
}
}
Was möchten Sie tun? Gibt es immer genau 4 Knöpfe in einer Reihe? Wenn dies der Fall ist, möchten Sie kein GridLayout verwenden, sondern ein LinearLayout (wenn nicht scrollen) oder ein RecyclerView mit einem LinearLayoutManager, der auf Horizontal eingestellt ist, wenn Sie scrollen möchten. –
Ich versuche, eine variable Anzahl von Schaltflächen in meinem 'GridLayout' anzupassen. Ich möchte, dass eine Methode die Anzahl der Spalten als Argument annimmt und auf dieser Grundlage Schaltflächen generiert. Die Zeile ist immer auf 2 festgelegt. Wenn meine Spalte also 3 ist, sollte sie insgesamt 6 Schaltflächen generieren. Wenn 2, dann 4 Tasten. Ich kann die Anzahl der Schaltflächen abrufen, aber die Breite der Schaltfläche kann nicht so festgelegt werden, dass sie in GridLayout den gleichen Speicherplatz belegt. Ich kann diese Breite nicht einstellen – Auro