i'm writing progrmicaly adding Linearlayout and Textview into ScrollView. but my ScrollView could not scroll to height.
My programicall Code:
if (cursor.moveToFirst()) {
do {
String last_ID = cursor.getString(cursor.getColumnIndex("lastId"));
String smsBody = cursor.getString(cursor.getColumnIndex("smsBody"));
String senderName = cursor.getString(cursor.getColumnIndex("senderName"));
String date[] = cursor.getString(cursor.getColumnIndex("receiveDate")).split("/");
CalendarTool ct =
new CalendarTool(
Integer.valueOf(date[0]),
Integer.valueOf(date[1]),
Integer.valueOf(date[2])
);
String IranianDate = ct.getIranianDate();
ScrollView SV =new ScrollView(this);
LinearLayout ll = new LinearLayout(this);
ll.setBackgroundColor(Color.parseColor("#f7cbad"));
ll.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
params.setMargins(0, 0, 0, 10);
ll.setLayoutParams(params);
TextView TV_IranianDate = new TextView(this);
TV_IranianDate.setText(IranianDate);
TV_IranianDate.setTextColor(Color.parseColor("#ffffff"));
TV_IranianDate.setLayoutParams(
new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT)
);
ll.addView(TV_IranianDate);
TextView TV_smsBody = new TextView(this);
TV_smsBody.setText(smsBody);
TV_smsBody.setGravity(Gravity.RIGHT);
TV_smsBody.setLayoutParams(
new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT)
);
TV_smsBody.setPadding(5, 5, 5, 5);
ll.addView(TV_smsBody);
TextView TV_spacer2 = new TextView(this);
TV_spacer2.setBackgroundColor(Color.parseColor("#000000"));
TV_spacer2.setLayoutParams(
new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.FILL_PARENT,
1)
);
ll.addView(TV_spacer2);
SV.addView(ll);
((LinearLayout) linearLayout).addView(SV);
} while (cursor.moveToNext());
}
I guess the problem is the ScrollView object. You should use HorizontalScrollView instead, like this for example:
HorizontalScrollView SV = new HorizontalScrollView(this);
SV.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
like described in the API:
ScrollView only supports vertical scrolling. For horizontal scrolling, use HorizontalScrollView.
Related
I have to create like flip cart main page, so I need use more than one horizontal view how to create that programmatically in android. In that horizontal view inside Vertical orientation using images, price, product name will display in android.
Thank in Advance
I just created Like this as mention below code:
public void shopimages()
{
/* GradientDrawable drawable = new GradientDrawable(
GradientDrawable.Orientation.TOP_BOTTOM,new int[] {R.color.shadow,Color.WHITE,R.color.shadow});
drawable.setShape(GradientDrawable.RECTANGLE);*/
// drawable.setStroke(3, Color.BLACK);
//drawable.setCornerRadius(8);
// drawable.setColor(0xFFFFFFFF); //white background
// border.setStroke(1, 0xFF000000);
// categories = getResources().getStringArray(R.array.categories);
/* child layout of horizontal*/
LinearLayout[] lLayout = new LinearLayout[8];
for(int j=0;j<lLayout.length;j++ ) {
lLayout[j] = new LinearLayout(getActivity());
LinearLayout li=new LinearLayout(getActivity());
li.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
li.setOrientation(LinearLayout.VERTICAL);
/* Heading text for each horizontal images*/
name=new TextView(getActivity());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(0,150,0,0);
name.setLayoutParams(params);
name.setBackgroundColor(Color.parseColor("#FFFFFF"));
name.setText("kani"+j);
name.setPadding(10,10,10,10);
name.setTextColor(Color.parseColor("#ff1319ff"));
li.addView(name);
li.setTop(50);
root.addView(li);
/*end*/
/* child layout created dynamically*/
// lLayout[j].setBackgroundDrawable(drawable);
sv = new HorizontalScrollView(getActivity());
sv.setHorizontalScrollBarEnabled(false);
lLayout[j].setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
lLayout[j].setOrientation(LinearLayout.HORIZONTAL);
sv.addView(lLayout[j]);
/*end*/
t = new TextView[10];
names=new TextView[10];
price=new TextView[10];
existingprice=new TextView[10];
img = new ImageView[10];
/*create the layout for textveiw and image view*/
LinearLayout.LayoutParams image=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
image.topMargin=50;
image.leftMargin=15;
image.rightMargin=15;
image.bottomMargin=10;
image.width=200;
image.height=150;
LinearLayout.LayoutParams dim = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
dim.topMargin=20;
dim.leftMargin=15;
dim.rightMargin=15;
dim.bottomMargin=10;
dim.width=200;
dim.height=80;
LinearLayout.LayoutParams dim2 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
dim2.leftMargin=40;
dim2.width=200;
LinearLayout.LayoutParams dim3 = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
/*end*/
/*using for loop to run the rexxtview*/
for (int i = 0; i < 10; i++) {
LinearLayout imageVertical =new LinearLayout(getActivity());
imageVertical.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
imageVertical.setOrientation(LinearLayout.VERTICAL);
img[i] = new ImageView(getActivity());
img[i].setPadding(8, 8, 8, 8);
img[i].setScaleType(ImageView.ScaleType.CENTER_CROP);
img[i].setImageResource(mThumbIds[i]);
t[i] = new TextView(getActivity());
img[i].setLayoutParams(image);
t[i].setLayoutParams(dim);
t[i].setGravity(Gravity.CENTER);
t[i].setTextSize(14);
t[i].setTextColor(Color.parseColor("#ff1319ff"));
t[i].setText("YOHOHO: " + i);
// name
names[i] = new TextView(getActivity());
names[i].setLayoutParams(dim2);
names[i].setGravity(Gravity.CENTER);
names[i].setTextSize(14);
names[i].setTextColor(Color.parseColor("#ff1319ff"));
/*names[i].setEllipsize (TextUtils.TruncateAt.END);*/
names[i].setText("lightweight" + i);
//horizontal linear layout
LinearLayout pricelayout=new LinearLayout(getActivity());
pricelayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
pricelayout.setOrientation(LinearLayout.HORIZONTAL);
//price
price[i] = new TextView(getActivity());
// price[i].setLayoutParams(dim3);
price[i].setGravity(Gravity.CENTER);
price[i].setTextSize(9);
price[i].setTextColor(Color.parseColor("#ff1319ff"));
price[i].setText("Rs.2000");
// existing price
existingprice[i] = new TextView(getActivity());
/*existingprice[i].setLayoutParams(dim3);*/
existingprice[i].setGravity(Gravity.CENTER);
existingprice[i].setTextSize(9);
existingprice[i].setTextColor(Color.parseColor("#ff1319ff"));
existingprice[i].setPaintFlags(existingprice[i].getPaintFlags()| Paint.STRIKE_THRU_TEXT_FLAG);
existingprice[i].setText("Rs.5340");
pricelayout.addView(price[i]);
pricelayout.addView(existingprice[i]);
imageVertical.addView(img[i]);
imageVertical.addView(t[i]);
imageVertical.addView(names[i]);
imageVertical.addView(pricelayout);
// imageVertical.addView(existingprice[i]);
lLayout[j].addView(imageVertical);
}
/*end*/
/* parent layout we can add the child view */
root.addView(sv);
}
Sorry for my English. I have a dynamically created TextView and ImageView, they are added to the LinearLayout. But when I start to write a TextView that it changes its size and thus reduces the ImageView. The picture below is an example of how the size of the
final LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
row.setOrientation(LinearLayout.HORIZONTAL);
//params editTExt
android.widget.LinearLayout.LayoutParams paramsEtext = new android.widget.LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 1f);
paramsEtext.gravity = Gravity.LEFT;
//params image View
LinearLayout.LayoutParams paramsImageView = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.25f);
paramsImageView.gravity = Gravity.CENTER_VERTICAL;
//create edit text
final EditText etext = new EditText(QuicklyCreateQwestions.this);
etext.setLayoutParams(paramsEtext);
//add et in ArrayList
et.add(etext);
//set text in textView
etext.setText(qwestions.get(i).toString());
row.addView(etext);
//add ImageView in edit text
final ImageView imV = new ImageView(this);
imV.setLayoutParams(paramsImageView);
imV.setImageResource(R.drawable.t_del_poll);
imV.setId(i);
//set button in layaut
row.addView(imV);
//action if button click
imV.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
row.removeView(etext);
row.removeView(imV);
}
});
//add editText and button in layaut
LinearLayoutTextQwestions.addView(row);
Dynamic linearlayout weight is not setting properly, refer the following coding
LinearLayout.LayoutParams mainparams = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT,
1.0f);
mainparams.setMargins(0, 10, 0, 0);
LinearLayout li = new LinearLayout(Appointmentdetails.this);
li.setOrientation(LinearLayout.HORIZONTAL);
li.setLayoutParams(mainparams);
LinearLayout text = new LinearLayout(Appointmentdetails.this);
text.setWeightSum(1);
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
2.0f);
text.setLayoutParams(lparams);
tv = new TextView(this);
tv.setTextSize(18);
tv.setTypeface(MyriadPro);
tv.setLayoutParams(lparams);
tv.setText(Alldata.question.get(i).getgQuestion());
tv.setSingleLine();
tv.setPadding(25, 0, 0, 0);
tv.setMarqueeRepeatLimit(10);
tv.setEllipsize(TruncateAt.MARQUEE);
tv.setSelected(true);
text.addView(tv);
li.addView(text);
LinearLayout Spi = new LinearLayout(Appointmentdetails.this);
Spi.setWeightSum(1);
LinearLayout.LayoutParams lparams1 = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
1f);
Spi.setLayoutParams(lparams1);
RadioGroup rg = new RadioGroup(Appointmentdetails.this);
// rg.setLayoutParams(lparams1);
gAnswerList.add("Select");
for (int j = 0; j < helptext.split(Expressions).length; j++) {
RadioButton rb = new RadioButton(Appointmentdetails.this);
rb.setText(helptext.split(Expressions)[j].toString());
rb.setId(j);
rb.setLayoutParams(lparams1);
rg.addView(rb);
}
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup rg, int checkedId) {
for (int i = 0; i < rg.getChildCount(); i++) {
RadioButton rb = (RadioButton) rg.getChildAt(i);
if (rb.getId() == checkedId) {
CharSequence text = rb.getText();
mSelectedRadioValue = text + ",";
gAnswerList.set(i2, text.toString());
// do something with text
return;
}
}
}
});
Spi.addView(rg);
li.addView(Spi);
mQuestionLayout.addView(li);
}
}
This is how i have added a radio button inside the dynamic linear layout, i dont know whats wrong in my coding its not properly aligned, kindly suggest me to get the solution. Thanks in advance.
I would attempt setting the layout params to center. Your pretty much just giving them free flow and setting wherever they like with WRAP_CONTENTS. Yes, they will not fill the entire screen which is not what you want, but try passing something like Try doing something like this
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT,
2.0f, lparams.Gravity.CENTER);
Try this for RadioButton and text alignment
LinearLayout.LayoutParams mainparams = new LinearLayout.LayoutParams(
LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT
);
LinearLayout li = new LinearLayout(Appointmentdetails.this);
li.setOrientation(LinearLayout.HORIZONTAL);
li.setLayoutParams(mainparams);
li.setWeightSum(2);
LinearLayout.LayoutParams mainparams1 = new LinearLayout.LayoutParams(
0, LayoutParams.WRAP_CONTENT
);
mainparams1.weight = 1;
TextView tv = new TextView(this);
tv.setTextSize(18);
tv.setLayoutParams(mainparams1);
tv.setText("text ");
RadioGroup rg = new RadioGroup(Appointmentdetails.this);
rg.setLayoutParams(mainparams1);
rg.setOrientation(RadioGroup.VERTICAL);
for (int j = 0; j < helptext.split(Expressions).length; j++) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT
);
RadioButton rb = new RadioButton(Appointmentdetails.this);
rb.setText(helptext.split(Expressions)[j].toString());
rb.setId(j);
rb.setLayoutParams(params );
rg.addView(rb);
}
li.addView(tv);
li.addView(rg);
Here I have to add text view programmatically based on array list size. Text views should be appear in row like continues pattern...
eg. tv1, tv2, tv3 and so on till the size of array list.
But here I am getting text views which are appearing on each other. I can't read the text on them. Here is my code:
ArrayList<String> languageNames = new ArrayList<String>();
RelativeLayout rl = (RelativeLayout)findViewById(R.id.rl);
if(languageNames.size()>0)
{
int size = languageNames.size();
TextView[] tv = new TextView[size];
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.BELOW, tvLocation.getId());
for(int i=0; i<size; i++)
{
tv[i] = new TextView(getBaseContext());
tv[i].setText(languageNames.get(i).toString());
tv[i].setLayoutParams(p);
tv[i].setPadding(50, 50, 0, 0);
tv[i].setTextColor(Color.parseColor("#000000"));
rl.addView(tv[i]);
}
}
else
{
}
what needs to be done so that I can get text views in appropriate manner?
Add buttons inside a LinearLayout and add this LinearLayout in the RelativeLayout.
RelativeLayout r1 = (RelativeLayout) findViewById(R.id.r1);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
p.addRule(RelativeLayout.BELOW, tvLocation.getId());
LinearLayout LL = new LinearLayout(getBaseContext());
LL.setOrientation(LinearLayout.VERTICAL);
for (int i=0;i< size;i++) {
tv[i] = new TextView(getBaseContext());
tv[i].setText(languageNames.get(i).toString());
tv[i].setPadding(50, 50, 0, 0);
tv[i].setTextColor(Color.parseColor("#000000"));
LL.addView(tv);
}
r1.addview(LL, p);
Try this code:
LinearLayout rl = (LinearLayout)findViewById(R.id.mainLayout);
TextView[] tv = new TextView[10];
for(int i=0; i<10; i++)
{
tv[i] = new TextView(getBaseContext());
tv[i].setText("TextView "+ i);
tv[i].setPadding(50, 50, 0, 0);
tv[i].setTextColor(Color.parseColor("#000000"));
rl.addView(tv[i]);
}
Hope this will help you
I want to put my number button like that. This is my code:
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout layout2 = new LinearLayout(this);
layout2.setOrientation(LinearLayout.HORIZONTAL);
TextView titleView = new TextView(this);
titleView.setText("Hello World!");
layout.addView(titleView);
android.widget.LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT, 1);
android.widget.TableLayout.LayoutParams params = new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.FILL_PARENT, 1);
Button btnConnect = new Button(this);
btnConnect.setText("Connect");
btnConnect.setLayoutParams(param);
layout2.addView(btnConnect);
Button btnDisconnect = new Button(this);
btnDisconnect.setText("Disconnect");
layout2.addView(btnDisconnect);
btnDisconnect.setLayoutParams(param);
layout.addView(layout2);
TableLayout tblLayout = new TableLayout(this);
tblLayout.setOrientation(TableLayout.HORIZONTAL);
TableRow tblrow = null;
for (int i = 1; i <= 9; i++) {
if (i % 3 == 1) {
tblrow = new TableRow(this);
tblLayout.addView(tblrow);
}
Button b = new Button(this);
b.setText("" + i);
tblrow.addView(b);
}
TableRow tr = new TableRow(this);
Button btnZero = new Button(this);
btnZero.setText("0");
Button btnHash = new Button(this);
btnHash.setText("#");
Button btnStar = new Button(this);
btnStar.setText("*");
tr.addView(btnZero);
tr.addView(btnHash);
tr.addView(btnStar);
tblLayout.addView(tr);
layout.addView(tblLayout);
setContentView(layout);
this complies:
In order to make my columns like that. I used this code:
android.widget.TableLayout.LayoutParams params = new TableLayout.LayoutParams(
LayoutParams.MATCH_PARENT, LayoutParams.FILL_PARENT, 1);
tblLayout.setLayoutParams(param);
but there's no change. What do i need to do? Is that Layoutparams not enough to do that?
You need to set the widths of layout, layout2, tblLayout, each tblRow, and tr to MATCH_PARENT and each Button must have an equal layout_weight.