How to write a paragraph in android - android

I am trying to insert a paragraph in android application.
My code is like this:
MainActivity:
public class MainActivity extends ActionBarActivity {
TextView t;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView t = (TextView) findViewById(R.id.text);
t.setText("This is the first line\nThis is the second line\nThird line...");
}
activity_main.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"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
tools:context="com.example.helloworld_5.MainActivity$PlaceholderFragment" >
<TextView
android:text="#+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</RelativeLayout>
Unfortunately The app is not working.What else I need to include?
Please help..

Change the text attribute of your TextView to id in your xml file...
<TextView
android:id="#+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

This worked for me:
TextView t = (TextView) findViewById(R.id.textView);
t.setText(Html.fromHtml("<p>This is the first line</p>
<p>This is the second line</p><p>Third line...</p>"));

Related

How to add an EditText in a TextView?

I am trying to add an EditText within a TextView. My idea is to build a two activities, wherein in the first activity, fill in the blanks type of question will be entered in EditText and will be sent to second activity on button click and in second activity I want the text entered in the first activity to be displayed along with the EditText in the place of blank where it needs to answered.
My whole idea was to enter fill in the blank question with underscore at the place to be answered in the first activity and to display the question in the second activity by replacing the underscore with EditText.
first activity class code:
public class FirstActivity extends AppCompatActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);
}
public void onButtonClick(View view)
{
if (view.getId() == R.id.button)
{
EditText editText = (EditText) findViewById(R.id.editText);
String text = editText.getText().toString();
Intent intent = new Intent(this, Main2Activity.class);
intent.putExtra("mytext", text);
startActivity(intent);
}
}
}
First activity layout code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
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=".FirstActivity">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:ems="10"
android:layout_marginTop="48dp"
android:id="#+id/editText"
android:hint="Enter here"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="#+id/editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="100dp"
android:id="#+id/button"
android:onClick="onButtonClick" />
</RelativeLayout>
Second Activity Class:
public class SecondActivity extends AppCompatActivity {
TextView textView;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
TextView textview1 = (TextView) findViewById(R.id.textView);
int positionX = textview1.getLeft();
int positionY = textview1.getRight();
EditText ed = new EditText(this);
ed.setEnabled(false);
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) ed.getLayoutParams();
params.leftMargin = positionX;
params.topMargin = positionY;
params.width = 30;
ed.setLayoutParams(params);
textview1.setText(getIntent().getStringExtra("mytext"));
}
}
Second Activity Layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
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=".SecondActivity">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="33dp"
android:layout_marginTop="47dp"
android:id="#+id/textView" />
</RelativeLayout>
You could split your text with your underscore characters, then, programmatically add TextViews and EditText.
Take a look at this.

First android app - Cannot find item from resource

So I am following the documentation for creating a first app from here. and this is what I have so far nothing complicated
import static android.R.attr.id;
public class MainActivity extends AppCompatActivity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/** Called when the user clicks the Send button */
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
}
and my other activity is
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TextView;
public class DisplayMessageActivity extends AppCompatActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText(message);
ViewGroup layout = (ViewGroup) findViewById(R.id.activity_display_message);
layout.addView(textView);
}
}
In my MainActivity I have this causing the problem
EditText editText = (EditText) findViewById(R.id.edit_message);
and the problem is android studio says that
Error:(25, 55) error: int cannot be dereferenced
I am not sure what R.id.edit_message is and where it should be placed ? In my resources i do not have anything called edit_message any suggestions on how I can fix this issue ?
this is what my activity_main.xml looks like
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
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="com.example.admin.test.MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/button_send"
android:onClick="sendMessage" />
</RelativeLayout>
You should should change the TextView in your layout to EditText
That is change
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
to
<EditText
android:id="#+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"/>
You complete layout will look like this
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="#+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
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="com.example.admin.test.MainActivity">
<EditText
android:id="#+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="text"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/button_send"
android:onClick="sendMessage" />
</RelativeLayout>
You are getting this error because in your activity_main.xml, you are trying to reference an EditText that is not there yet. Add the code below into your activity_main.xml
<EditText
android:id="+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
The code below which is in your MainActivity.java is basically creating a connection between the EditText in your xml to the java.
EditText editText = (EditText) findViewById(R.id.edit_message);
You need to give an id to all your widgets in your xml code with the id property.
Format to do that is:
android:id="#+id/myId"
and then you can access any element by using its id in your Java code
EditText et=(EditText) findViewById(R.id.myId);
PS: You also seem to be accessing a EditText which is not present in your layout file.

Android place view dynamically relative view

Similar to a to do app. I have a top bar that is set by the xml file and at run time I would like to create some textviews which go directly under it. Also there will be a button that adds new text views when clicked.
When I create a new textview from the button how do I make sure that the new Textview stays under the static textviews and/or layouts that I have created. Right now it's not and it's just overlapping.
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.content_main);
Button btn = (Button) findViewById(R.id.Add_new);
btn.setOnClickListener(new View.OnClickListener() {
#Override
public void onClick(View v) {
AddNewTask(v);
}
});
}
I tried both options to add a new textview and both of them just overalpp and I can't find any documentation on a method such as under/below, most I can find are just alight top and align bottom which wouldn't be useful in this case
public void AddNewTask(View v) {
RelativeLayout rl = (RelativeLayout) findViewById(R.id.overallview);
TextView tv= new TextView(this);
tv.setText("TEST");
rl.addView(tv);
}
My XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:id="#+id/overallview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="#dimen/activity_vertical_margin"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
app:layout_behavior="#string/appbar_scrolling_view_behavior"
tools:context="com.example.robertli.hustle.MainActivity"
tools:showIn="#layout/activity_main"
android:background="#00095e">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#android:color/white"
android:id="#+id/topbar"
>
<TextView
android:id="#+id/app_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="2"
android:text="Hustle"
android:textSize="25dp" />
</LinearLayout>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:layout_below="#id/topbar"
android:id="#+id/Add_new"
android:background="#00095e"
android:textColor="#ffffff"
android:clickable="true"
android:textSize="50dp" />
Suggestion : You should take a look at ListView to do this !!! ListView help you dynamically add the textview as well.
if you still want to adding directly to Relativelayout
refer this example:
RelativeLayout relativeLayout = new RelativeLayout(context);
View view = new View(context);
relativeLayout.addView(view);
code to dynamically add alignment in RelativeLayout
RelativeLayout.LayoutParams viewLayoutParams = (RelativeLayout.LayoutParams) view.getLayoutParams();
viewLayoutParams.addRule(RelativeLayout.BELOW, R.id.your_view);
take a look at documentation for more
https://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html

How to show both the layout and the message?

I created a message activity and it works but my problem is the xml layout that I created is not showing, only the message or vice versa (the layout is showing without the message).How do I solve this?
here is the code of the class:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String message = intent.getStringExtra (MESSAGE_KEY);
TextView textView = new TextView(this);
textView.setTextSize(40);
textView.setText (message);
setContentView(textView);
setContentView(R.layout.activity_fire_alert);
}
and here is the xml file that i want to show
<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:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
android:paddingBottom="#dimen/activity_vertical_margin"
tools:context="com.example.user.tictactoeniandy.FireAlertActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="View Sender Location"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="91dp"
android:id="#+id/loc_button1"/>
</RelativeLayout>
You can only have 1 content view. The second one you set overwrites the other. The correct way to do this is to have a TextView inside your layout, and to set the text on that view to the message
<LinearLayout 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:orientation:"vertical"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
android:paddingBottom="#dimen/activity_vertical_margin"
tools:context="com.example.user.tictactoeniandy.FireAlertActivity">
<TextView
android:id="#+id/loc_textview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="View Sender Location"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="View Sender Location"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="91dp"
android:id="#+id/loc_button1"/>
</LinearLayout>
and in your activity code,
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fire_alert);
Intent intent = getIntent();
String message = intent.getStringExtra (MESSAGE_KEY);
TextView textView = (TextView)findviewbyid(R.id.loc_textview);
textView.setTextSize(40);
textView.setText (message);
}
you can have only one set content view. try to update your layout and code with mine and check it will show both.
The setContentView() method, as the name suggests, sets the content of your activity. To solve this, place your TextView directly on your layout file, for example:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
...>
<Button
android:layout_width="wrap_content"
android:layout_height="
...
.../>
<TextView
android:id="#+id/text_view_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="40sp"
android:layout_centerInParent="true"/>
</RelativeLayout>
On your Java code, make a TextView using the id you just created on your layout, then set the message text on it.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fire_alert);
TextView textView = (TextView) findViewById(R.text_view_message);
Intent intent = getIntent();
String message = intent.getStringExtra (MESSAGE_KEY);
textView.setText (message);
}

Android View Inflate Exception

In my project, I use an Activity called PigeonSketch and whenever I open the Activity it gives android.view.InflateException: Binary XML file line #15: Error inflating class <unknown>
Here is my Activity class and XML layout file
public class PigeonSketch extends Activity {
private RelativeLayout dashBoard;
private ImageView imagePigeon;
private Button search;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pigeon_sketch);
setTitle("Pigeon")
dashBoard = (RelativeLayout) findViewById(R.id.pigeon_dashBoard);
imagePigeon = (ImageView) findViewById(R.id.pigeonsketch);
search = (Button) findViewById(R.id.searchButton)
}
And the layout:
<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"
android:paddingLeft="#dimen/activity_horizontal_margin"
android:paddingRight="#dimen/activity_horizontal_margin"
android:paddingTop="#dimen/activity_vertical_margin"
tools:context=".GridViewList" >
<RelativeLayout
android:id="#+id/pigeon_dashBoard"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp" >
<ImageView
android:id="#+id/pigeonsketch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="#string/app_name"
android:src="#drawable/image_pigeon"
android:visibility="invisible" />
</RelativeLayout>
<Button
android:id="#+id/searchButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:text="Search" />
</RelativeLayout>
How can I solve this issue?
try to change
tools:context=".GridViewList"
to this
tools:context=".PigeonSketch"
or remove the line..
First you are using wrong tools reference :
tools:context=".PigeonSketch"
Second you define Button in xml and find using ImageButton so replace ImageButton with Button in Activity :
private Button search;
search = (Button) findViewById(R.id.searchButton)

Categories

Resources