How to align vertical textview and editText in Linearlayout in android - java

Currently, I am trying to code a textview and a edittext to align vertically using Linearlayout in android studio. I tried setting out the layout gravity and the other element but I cannot achieve what I want currently this is my code.
LinearLayout params3 = new LinearLayout(this);
params3.setOrientation(LinearLayout.VERTICAL);
params3.setGravity(Gravity.CENTER_VERTICAL);
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params2.weight = 35;
params3.setLayoutParams(params2);
params2.height = convertDiptoPix(80,context);
//params2.leftMargin = convertDiptoPix(5,context);
TextView textView1 = new TextView(this);
textView1.setId(View.generateViewId());
textView1.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
textView1.setPadding(0,convertDiptoPix(1,context),0,convertDiptoPix(3,context));
textView1.setText("Receipt");
textView1.setTextColor(Color.parseColor("#000000"));
//textView1.setLayoutParams(params2);
textView1.setTextSize(convertDiptoPix(13,context));
EditTextIME editTextIME = new EditTextIME(this);
editTextIME.setId(View.generateViewId());
//editTextIME.setWidth(LinearLayout.LayoutParams.MATCH_PARENT);
//editTextIME.setMinimumHeight(LinearLayout.LayoutParams.WRAP_CONTENT);
editTextIME.setGravity(Gravity.BOTTOM | Gravity.CENTER_VERTICAL);
//editTextIME.setLayoutParams(params2);
editTextIME.setFocusableInTouchMode(true);
editTextIME.setKeyListener(DigitsKeyListener.getInstance("abcdefghijklmnopqrstuvwxyzöäüßñéúíóáèùòìàâãåæçëêìíîïôõûýABCDEFGHIJKLMNOPQRSTUVWXYZÖÄÜÕÔÒÔÓÙÚÛÝÑÇÈÉÊËÌÍÎÏÆÅÄÃÂÁÀØ01234567890()&*$%#!+-:;,._?¿/><[]{}|\\^ "));
editTextIME.setHint("Notes");
editTextIME.setInputType(InputType.TYPE_CLASS_TEXT);
editTextIME.setHorizontallyScrolling(true);
editTextIME.setTextSize(convertDiptoPix(13,context));
is anyone had anyone tried to code like vertical align in android studio? Can you share your idea?

You can try this,
LinearLayout parent = new LinearLayout(context);
parent.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
parent.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
TextView textView1 = new TextView(this);
textView1.setLayoutParams(params2);
textView1.setId(View.generateViewId());
textView1.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL);
textView1.setText("Receipt");
textView1.setTextColor(Color.parseColor("#000000"));
EditText editTextIME = new EditText(this);
editTextIME.setId(View.generateViewId());
editTextIME.setGravity(Gravity.BOTTOM | Gravity.CENTER_VERTICAL);
editTextIME.setLayoutParams(params2);
editTextIME.setFocusableInTouchMode(true);
editTextIME.setKeyListener(DigitsKeyListener.getInstance("abcdefghijklmnopqrstuvwxyzöäüßñéúíóáèùòìàâãåæçëêìíîïôõûýABCDEFGHIJKLMNOPQRSTUVWXYZÖÄÜÕÔÒÔÓÙÚÛÝÑÇÈÉÊËÌÍÎÏÆÅÄÃÂÁÀØ01234567890()&*$%#!+-:;,._?¿/><[]{}|\\^ "));
editTextIME.setHint("Notes");
editTextIME.setInputType(InputType.TYPE_CLASS_TEXT);
editTextIME.setHorizontallyScrolling(true);
// editTextIME.setTextSize(convertDiptoPix(13,context));
parent.addView(textView1);
parent.addView(editTextIME);

Related

Add multiple lines to a LinearLayout in AlertDialog

In my app, I have a button that when pressed, displays an AlertDialog with the question to add an entry with two NumberPickers, one for Minutes and the other for seconds. I would like to display a TextView with "Min" above the minutes one, and one with "Sec" above the seconds one. The Java file looks like this:
//create linearlayout for display on the alertdialog
LinearLayout parent = new LinearLayout(this);
parent.setOrientation(LinearLayout.HORIZONTAL);
//create upper and lower LinearLayout
LinearLayout upper = new LinearLayout(this);
LinearLayout lower = new LinearLayout(this);
upper.setOrientation(LinearLayout.HORIZONTAL);
lower.setOrientation(LinearLayout.HORIZONTAL);
//create parameters for the lower and upper linearLayouts
LinearLayout.LayoutParams upParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
LinearLayout.LayoutParams downParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
//Create numberPicker and TextView for the Seconds
final NumberPicker secondsPicker = new NumberPicker(this);
secondsPicker.setMinValue(MIN_SECOND_INPUT);
secondsPicker.setMaxValue(MAX_SECOND_INPUT);
final TextView secondsText = new TextView(this);
secondsText.setText(R.string.Seconds);
//Create numberpicker and TextView for the minutes
final NumberPicker minutesPicker = new NumberPicker(this);
minutesPicker.setMinValue(MIN_MINUTE_INPUT);
minutesPicker.setMaxValue(MAX_MINUTE_INPUT);
final TextView minutesText = new TextView(this);
minutesText.setText(R.string.Minutes);
//create parameters for the LinearLayout
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.CENTER;
//create parameters for the TextView for seconds
LinearLayout.LayoutParams paramsTextSec = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
paramsTextSec.weight = 1;
//create parameters for the TextView for minutes
LinearLayout.LayoutParams paramsTextMin = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
paramsTextMin.weight = 1;
//create parameters for the numberpicker for the seconds
LinearLayout.LayoutParams paramsSeconds = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
paramsSeconds.weight = 1;
//create parameters for the numberpicker for the Minutes
LinearLayout.LayoutParams paramsMinutes = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
paramsMinutes.weight = 1;
//add parameters to linear layout
parent.setLayoutParams(params);
upper.setLayoutParams(upParams);
lower.setLayoutParams(downParams);
upper.addView(secondsPicker, paramsSeconds);
upper.addView(secondsText, paramsTextSec);
lower.addView(minutesPicker, paramsMinutes);
lower.addView(minutesText, paramsTextMin);
parent.addView(upper);
parent.addView(lower);
//create alertdialog with the linear layout with numberpickers
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Add an extra slot:");
builder.setView(parent);
builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
int seconds = secondsPicker.getValue() + minutesPicker.getValue() * 60;
addValueToScheme(seconds);
}
});
AlertDialog dialog = builder.create();
dialog.show();
The AlertDialog gives a result where the Seconds appear next to the NumberPicker and the NumberPickers appear under each other.
How can I add the NumberPickers next to each other with the text above them?
first of all: please, move this Java code do XML, it would be much more easier to read, design and develop...
add weight=1 for upParams and downParams
LinearLayout.LayoutParams upParams = new LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.MATCH_PARENT);
upParams.weight = 1;
LinearLayout.LayoutParams downParams = new LinearLayout.LayoutParams(
0, LinearLayout.LayoutParams.MATCH_PARENT);
downParams.weight = 1;
this will cause LinearLayout upper to be on the left and LinearLayout lower on the right (thanks to parent orientation HORIZONTAL), so change their names... then set their orientation for VERTICAL
upper.setOrientation(LinearLayout.VERTICAL);
lower.setOrientation(LinearLayout.VERTICAL);
and now you have two vertical containers, left and right, with equal width, and you can add to both some elements, e.g. at first TextView, after that NumberPicker, both with width MATCH_PARENT to fulfil (half of width of whole Dialog)

how to design Linear layout programmatically

how can I do something like this programmatically? There must be one Checkbox and two vertical textview in MaterialCardView.I tried using Linearlayout but I can't solve it.
LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
linearLayout.setOrientation(LinearLayout.VERTICAL);
mCardView=new MaterialCardView(this);
mCardView.setLayoutParams(layoutparams);
mCardView.setElevation(2);
linearLayout.addView(mCardView);
LinearLayout linearLayout1=new LinearLayout(this);
linearLayout1.setOrientation(LinearLayout.HORIZONTAL);
linearLayout1.setLayoutParams(layoutparams);
linearLayout.addView(linearLayout1)
checkBox=new CheckBox(this);
linearLayout1.addView(checkBox);
txt_baslik=new TextView(this);
txt_tarih=new TextView(this);
txt_baslik.setLayoutParams(layoutparams);
txt_tarih.setLayoutParams(layoutparams);
txt_baslik.setText("deneme baslik");
txt_tarih.setText("deneme tarih");
linearLayout1.addView(txt_baslik);
linearLayout1.addView(txt_baslik);
LinearLayout linearLayout2=new LinearLayout(this);
linearLayout2.setOrientation(LinearLayout.VERTICAL);
linearLayout2.setLayoutParams(layoutparams);
linearLayout.addView(linearLayout2);
I'm so confused
you can do like that :
LinearLayout.LayoutParams layoutparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
LinearLayout linearLayout=new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.HORIZONTAL);
CardView mCardView=new MaterialCardView(this);
mCardView.setLayoutParams(layoutparams);
mCardView.setElevation(2);
CheckBox checkBox=new CheckBox(this);
LinearLayout.LayoutParams checkBoxParam = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
checkBoxParam.gravity = Gravity.CENTER;
checkBox.setLayoutParams(checkBoxParam);
LinearLayout verticalLinLayout=new LinearLayout(this);
verticalLinLayout.setOrientation(LinearLayout.VERTICAL);
verticalLinLayout.setLayoutParams(layoutparams);
TextView txt_baslik=new TextView(this);
TextView txt_tarih=new TextView(this);
txt_baslik.setLayoutParams(layoutparams);
txt_tarih.setLayoutParams(layoutparams);
txt_baslik.setText("deneme baslik");
txt_tarih.setText("deneme tarih");
verticalLinLayout.removeAllViews();
verticalLinLayout.addView(txt_baslik);
verticalLinLayout.addView(txt_tarih);
linearLayout.addView(checkBox);
linearLayout.addView(verticalLinLayout);
mCardView.addView(linearLayout);
don't forgor add mCardView into your parent view at last.

LinearLayout - adding a TableLayout after a TextView

I'm having a problem with LinearLayout where I want to display a TableLayout after a TextView. I've tried modifying the LayoutParams however I can't seem to make it wrap (which I'm assuming I want it to do).
This is simplified version:
ScrollView sv = (ScrollView) findViewById(R.id.sv);
sv.removeAllViews();
LinearLayout ll = new LinearLayout(this);
sv.addView(ll);
//This is displayed
TextView tv = new TextView(this);
tv.setText("Hello World");
ll.addView(tv);
//This is not displayed - but if I remove the above view it will display...
TableLayout tl = new TableLayout(this);
ll.addView(tl, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
By specifiying Orientation as Vertical it worked for me:
ScrollView sv = (ScrollView) findViewById(R.id.sv);
sv.removeAllViews();
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
sv.addView(ll);
TextView tv = new TextView(this);
tv.setText("Hello World");
ll.addView(tv);
TableLayout tl = new TableLayout(this);
ll.addView(tl);

How to have dynamically a fixed header with scrollable content in Android?

I have created programmatically a RelativeLayout which contains a button. I have also created a ScrollView which contains a LinearLayout in which are more than 10 TextViews. I want to have the RelativeLayout to be aligned top and fixed. When someone tries to scroll down, i want all the TextViews to go behind the fixed RelativeLayout. I want that button to be always visible. With this code, the RelativeLayout and the button are not displayed. Where am i wrong?
RelativeLayout (fixed)
- Button
LinearLayout
- ScrollView
- TextView
- + other 10 TextViews
Here is my code:
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final RelativeLayout relativeLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeLayout.setLayoutParams(relativeLayoutParams);
this.setContentView(relativeLayout);
final Button restartButton = new Button(this);
restartButton.setText(R.string.restartButton);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
restartButton.setLayoutParams(buttonParams);
relativeLayout.addView(restartButton);
ScrollView scrollView = new ScrollView(this);
this.setContentView(scrollView);
final LinearLayout linearLayout = new LinearLayout(this);
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.setLayoutParams(linearLayoutParams);
linearLayout.setOrientation(linearLayout.VERTICAL);
scrollView.addView(linearLayout);
TextView textView1 = new TextView(this);
testTitle.setText(R.string.text_view1);
linearLayout.addView(textView1);
// + other 10 text views
}
Thanks!
In your code you replace your RelativeLayout with ScrollView. Just set firstly some LinearLayout as contentView and then put there your RelativeLayout via addView(relativeLayout) and the put there you scrollView also via addView(scrollView)
EDIT:
your new code:
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final LinearLayout mainLinearLayout = new LinearLayout(this);
LinearLayout.LayoutParams mainLinearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
mainLinearLayout.setLayoutParams(mainLinearLayoutParams);
mainLinearLayout.setOrientation(LinearLayout.VERTICAL);
this.setContentView(mainLinearLayout);
final RelativeLayout relativeLayout = new RelativeLayout(this);
RelativeLayout.LayoutParams relativeLayoutParams = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
relativeLayout.setLayoutParams(relativeLayoutParams);
mainLinearLayout.addView(relativeLayout);
final Button restartButton = new Button(this);
restartButton.setText(R.string.restartButton);
LinearLayout.LayoutParams buttonParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
restartButton.setLayoutParams(buttonParams);
relativeLayout.addView(restartButton);
ScrollView scrollView = new ScrollView(this);
mainLinearLayout.addView(scrollView);
final LinearLayout linearLayout = new LinearLayout(this);
LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
linearLayout.setLayoutParams(linearLayoutParams);
linearLayout.setOrientation(linearLayout.VERTICAL);
scrollView.addView(linearLayout);
TextView textView1 = new TextView(this);
testTitle.setText(R.string.text_view1);
linearLayout.addView(textView1);
// + other 10 text views
}
EDIT 2: renamed first linearLayout to mainLinearLayout according to the comment

How to put one buttom right and another left

I try to create dynamically linerlayout and i created two buttoms.
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT));
TextView titleView = new TextView(this);
titleView.setWidth(LayoutParams.WRAP_CONTENT);
titleView.setHeight(LayoutParams.WRAP_CONTENT);
titleView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
titleView.setText("Hallo Welt!");
layout.addView(titleView);
Button btnConnect = new Button(this);
btnConnect.setText("Connect");
layout.addView(btnConnect);
Button btnDisconnect = new Button(this);
btnDisconnect.setText("Disconnect");
layout.addView(btnDisconnect);
I want to put Connect button to left corner and want to put disconnet button to the right corner. How can i do that?
Have you tried to set layout gravity for your buttons?
LayoutParams params;
Button btnConnect = new Button(this);
params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.Left;
btnConnect.setLayoutParams(params);
...
Button btnDisconnect = new Button(this);
params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.gravity = Gravity.Right;
btnConnect.setLayoutParams(params);
...
Layout gravity defines where to place a view in its parent (see Gravity and layout_gravity on Android too)
Cheers
You can use RelativeLayout instead of linear layout.
and add rules to the layout params of the
RelativeLayout.Layoutparams params = RelativeLayout.Layoutparams params = (RelativeLayout.LayoutParams)button.getLayoutParams();
params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);

Categories