How to disable the Android text highlighter for buttons? - java

I'm currently developing an app displaying the default android buttons:
Screenshot
Why is that little blue mark (i don't know the correct name) showing in my app?
This is how I make it visible: I hold the button and then swipe from right to left over the text until the marker appears.
Usually I get that marker in EditText when selecting text - However this is a button and no EditText!
My XML for the button:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Sign in"
android:id="#+id/loginButton"
android:layout_below="#+id/mainLin"
android:layout_centerHorizontal="true"
android:backgroundTint="#2196F3"
android:textColor="#333"
android:textAllCaps="false"
android:layout_gravity="right"
android:enabled="true"
android:layout_marginTop="5dp" />

try in your XML :
android:textIsSelectable="false"
android:longClickable="false"

Related

Bottomnavigation: graphical glitch of the button

I am using BottomNavigation for my layout and after I press one button and change the page, the button looks as if I am still pressing it. It helps me if someone can give me a solution.
XML file
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="#+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:menu="#menu/bottom_nav_menu"
android:background="?android:attr/windowBackground"/>
The glitch:

Custom button programmatically android

I'm creating a list of buttons in Android with the same icon for each of them and then set the text programmatically. So my list has:
ImageView (always the same) + Text (label for the icon which I set programmatically).
How can I create a something like the icon below but where I can change text dinamically?
Thank you!
You can use android:drawableLeft attribute in the TextView. Here's the sample:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="#+id/textView"
android:gravity="center_vertical"
android:layout_margin="16dp"
android:drawableLeft="#drawable/ic_launcher"
/>
And the result
I would suggest you using the following
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="#string/button_text"
android:drawableLeft="#drawable/button_icon"
... />
If you are looking for more customized button, then probably you should learn more about Custom Views:
https://developer.android.com/training/custom-views/index.html
What I understand from your question is that you want to change/set the text of the button programmatically.
for this use the following code in onCreate event:
Button mybutton = (Button) findViewById(R.id.your_button_name);
mybutton.setText("Your Text Here");

how to insert Text in Multiple Lines using Checkbox in android?

iam newbie in android i am inserting text dynamically in CheckBox so i dnt have idea about length of text and i also have to insert a button in horizontal of Checkbox please let me know how can i insert text in multiple lines.
this is the checkbox array.
<LinearLayout
android:id="#+id/risktablerowcheckbox_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical"
android:background="#drawable/location_header_deactivedd"
android:visibility="gone">
<CheckBox
android:id="#+id/risktablerow_checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="#android:color/transparent"
android:drawablePadding="2dp"
android:layout_marginTop="8dp"
android:textSize="14sp"
android:textStyle="bold"/>
</LinearLayout>
<RelativeLayout
android:id="#+id/risktablerowbutton_layout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical">
<ImageButton
android:id="#+id/riskinfo_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#drawable/info"
android:layout_marginTop="5dp"
android:layout_alignParentRight="true"
android:layout_alignBottom="#+id/risktablerowspinner_layout"/>
</RelativeLayout>
String[] checkBoxArray = {"","","Reason For Risk Assesment Not Completed","","","Is the client prepared to provide details of theft-attractive stock or property?","","","If Other Scpecify","",""};
CheckBox riskCheckBox ;
riskCheckBox = (CheckBox)riskTableRow.findViewById(R.id.risktablerow_checkbox);
riskCheckBox.setText(checkBoxArray[j]);
You are setting the layout width of the parent linear layout and the checkbox to wrap_content. Thus the text in the checkbox has no width constraints.
If you set the linearlayout to match parent, it will be as wide as the screen, you can then set the checkbox to have a width of match_parent and a height of wrap_content and the text should automatically go to the next line.
You may also want to include some right margin on the checkbox to ensure there is some space on the right before the text is bumped to the next line.

Hardcoded Text Issues

I'm working on an application in eclipse emulator "Nexus one" and i'm trying to add buttons onto the format. When I add the buttons they are fine. When I add my own text into the button I get a hardcode warning. So I would carry on and add the "#string/" which gets rid of the errors/warnings, but the problem is that the "#string/" shows up as text on the button.
-So how do I make the buttons say just Profile and Calendar without errors and or the #string/
I have no idea on how to fix this. here is code and pictures:
<Button
android:id="#+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="#string/Profile"
android:onClick="profile" />
<Button
android:id="#+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="#+id/button1"
android:layout_marginTop="20dp"
android:text="#string/Calendar"
android:onClick="calendar"/>
Simple remove #string/ from your android:text attribute. Thus each button would look like this:
<Button
android:id="#+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Profile"
android:onClick="profile" />
#string/my_string_name is used to reference Strings defined in a strings.xml resource file.
The other (and the "proper") way to fix these errors is to define these strings in XML.
If you edit strings.xml and add lines such as <string name="Profile">Profile</string>, these errors will go away, and you will be on the way to having an app that is capable of being easily translated to other languages.

Custom Keypad -- How to make these buttons functional?

I have an app that I have almost finished which is a scoreboard app. When the user does a LongClick on the score, currently a dialog box appears which shows an EditText field with an OK and CANCEL button. When the user clicks the EditText field a keypad appears (numbers only) in which the user types in the new score, clicks DONE and then the EditText field shows the new value in the dialog box and when the user clicks OK it saves the entered value to the TextView showing the current score.
The problem is that I feel it is cumbersome. Here is what I would like to happen:
User does a LongClick on score
Keypad appears
User enters new score
User clicks OK
Keypad disappears and value is saved to the TextView updating the current score.
In order to accomplish this, I thought of two things:
I could create a new class extending View -- I'm too new to android to really understand this option.
I could replace the EditText in the dialog with a new XML file which is designed like a keypad.
Option 2: I figured this would probably be the easiest so I have designed the XML Layout and called it keypad.xml. Now when the user does a LongClick the keypad.xml file inflates in a dialog with OK and CANCEL. So far so good. However, I don't know where I should put the code for the button actions.
At first thought, I figured that I could setup some onClick listener which is for ALL BUTTONS in the layout. I figured that all buttons are going to perform the exact same function. Basically, get the text from the button (in this case 0-9) and append it to the TextView which is just above the keypad. Then when the user clicks OK save the TextView in keypad.xml to the current score textview.
Can anyone help point me in the right direction to accomplish this please?
Here is the screenshot of keypad.xml (there is an empty TextView above the numbers):
Here is the XML code:
<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="fill"
android:columnCount="3" >
<TextView
android:id="#+id/textView1"
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:gravity="right|center_vertical"
android:textSize="24sp" />
<Button android:text="1" />
<Button android:text="2" />
<Button android:text="3" />
<Button android:text="4" />
<Button android:text="5" />
<Button android:text="6" />
<Button android:text="7" />
<Button android:text="8" />
<Button android:text="9" />
<Button
android:layout_columnSpan="3"
android:layout_gravity="fill"
android:gravity="center"
android:text="0" />
This Question has not seemed to prompt a response. In case anyone is looking for an answer to this, I have come up with another solution which isn't exactly the same but works none the less.
Please see this question.

Categories