Android Tutorial - UI Button
Layout Button inside Activity
package com.commonsware.android.layouts; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import java.util.Date; public class NowRedux extends Activity implements View.OnClickListener { Button btn; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); btn=(Button)findViewById(R.id.button); btn.setOnClickListener(this); updateTime(); } public void onClick(View view) { updateTime(); } private void updateTime() { btn.setText(new Date().toString()); } } //res\layout\main.xml <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/button" android:text="" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
Create Image Button
//package com.akjava.lib.android.ui; import java.io.BufferedInputStream; import java.io.InputStream; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; class WidgetUtil { public static ImageButton createImageButton(Context context,Bitmap bitmap){ ImageButton bt=new ImageButton(context); bt.setImageBitmap(bitmap); return bt; } }
Create Button
//package com.akjava.lib.android.ui; import java.io.BufferedInputStream; import java.io.InputStream; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.TextView; class WidgetUtil { public static Button createButton(Context context,String label){ Button bt=new Button(context); bt.setText(label); return bt; } }
extends Button
//package com.bitle.views; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.widget.Button; interface OnButtonActionListener { public void onButtonDown(View view); public void onButtonUp(View view); } public class MyButton extends Button { public MyButton(Context context) { super(context); } public MyButton(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: buttonListener.onButtonDown((View)this); break; case MotionEvent.ACTION_UP: buttonListener.onButtonUp((View)this); break; } return super.onTouchEvent(event); } public void setOnButtonActionListener(OnButtonActionListener listener) { buttonListener = listener; } protected OnButtonActionListener buttonListener; }
Adding a radio button programmatically
package com.example.android.apis.view; import com.example.android.apis.R; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import android.widget.RadioGroup; import android.widget.Button; import android.widget.RadioButton; import android.widget.LinearLayout; public class RadioGroup1 extends Activity implements RadioGroup.OnCheckedChangeListener, View.OnClickListener { private TextView mChoice; private RadioGroup mRadioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.radio_group_1); mRadioGroup = (RadioGroup) findViewById(R.id.menu); // test adding a radio button programmatically RadioButton newRadioButton = new RadioButton(this); newRadioButton.setText(R.string.radio_group_snack); newRadioButton.setId(R.id.snack); LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams( RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); mRadioGroup.addView(newRadioButton, 0, layoutParams); } public void onCheckedChanged(RadioGroup group, int checkedId) { String selection = getString(R.string.radio_group_selection); String none = getString(R.string.radio_group_none); mChoice.setText(selection + (checkedId == View.NO_ID ? none : checkedId)); } public void onClick(View v) { mRadioGroup.clearCheck(); } } //layout/radio_group_1.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/lunch" android:id="@+id/menu"> <RadioButton android:text="@string/radio_group_1_breakfast" android:id="@+id/breakfast" /> <RadioButton android:text="@string/radio_group_1_lunch" android:id="@id/lunch" /> <RadioButton android:text="@string/radio_group_1_dinner" android:id="@+id/dinner" /> <RadioButton android:text="@string/radio_group_1_all" android:id="@+id/all" /> <TextView android:text="@string/radio_group_1_selection" android:id="@+id/choice" /> </RadioGroup> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_group_1_clear" android:id="@+id/clear" /> </LinearLayout>
This demonstrates the use of the PopupMenu class. Clicking the button will inflate and show a popup menu from an XML resource.
package com.example.android.apis.view; import android.app.Activity; import android.os.Bundle; import android.view.MenuItem; import android.view.View; import android.widget.PopupMenu; import android.widget.Toast; import com.example.android.apis.R; /** * This demonstrates the use of the PopupMenu class. Clicking the button will inflate and * show a popup menu from an XML resource. */ public class PopupMenu1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.popup_menu_1); } public void onPopupButtonClick(View button) { PopupMenu popup = new PopupMenu(this, button); popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { Toast.makeText(PopupMenu1.this, "Clicked popup menu item " + item.getTitle(), Toast.LENGTH_SHORT).show(); return true; } }); popup.show(); } } //layout/popup_menu_1.xml <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2010 Google Inc. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:onClick="onPopupButtonClick" android:text="popup_menu_button" /> </LinearLayout> //menu/popup.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/search" android:icon="@android:drawable/ic_menu_search" android:title="popup_menu_search" /> <item android:id="@+id/add" android:icon="@android:drawable/ic_menu_add" android:title="popup_menu_add" /> <item android:id="@+id/edit" android:icon="@android:drawable/ic_menu_edit" android:title="popup_menu_edit"> <menu> <item android:id="@+id/share" android:icon="@android:drawable/ic_menu_share" android:title="popup_menu_share" /> </menu> </item> </menu>
A list view that demonstrates the use of setEmptyView. This example alos uses a custom layout file that adds some extra buttons to the screen.
package com.example.android.apis.view; import com.example.android.apis.R; import android.app.ListActivity; import android.content.Context; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.ViewGroup.LayoutParams; import android.widget.BaseAdapter; import android.widget.Button; import android.widget.ImageView; import android.widget.AbsListView; import java.util.ArrayList; public class List8 extends ListActivity { PhotoAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Use a custom layout file setContentView(R.layout.list_8); // Tell the list view which view to display when the list is empty getListView().setEmptyView(findViewById(R.id.empty)); // Set up our adapter mAdapter = new PhotoAdapter(this); setListAdapter(mAdapter); // Wire up the clear button to remove all photos Button clear = (Button) findViewById(R.id.clear); clear.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mAdapter.clearPhotos(); } }); // Wire up the add button to add a new photo Button add = (Button) findViewById(R.id.add); add.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { mAdapter.addPhotos(); } }); } public class PhotoAdapter extends BaseAdapter { private Integer[] mPhotoPool = { R.drawable.sample_thumb_0, R.drawable.sample_thumb_1, R.drawable.sample_thumb_2, R.drawable.sample_thumb_3, R.drawable.sample_thumb_4, R.drawable.sample_thumb_5, R.drawable.sample_thumb_6, R.drawable.sample_thumb_7}; private ArrayList<Integer> mPhotos = new ArrayList<Integer>(); public PhotoAdapter(Context c) { mContext = c; } public int getCount() { return mPhotos.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { // Make an ImageView to show a photo ImageView i = new ImageView(mContext); i.setImageResource(mPhotos.get(position)); i.setAdjustViewBounds(true); i.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); // Give it a nice background i.setBackgroundResource(R.drawable.picture_frame); return i; } private Context mContext; public void clearPhotos() { mPhotos.clear(); notifyDataSetChanged(); } public void addPhotos() { int whichPhoto = (int)Math.round(Math.random() * (mPhotoPool.length - 1)); int newPhoto = mPhotoPool[whichPhoto]; mPhotos.add(newPhoto); notifyDataSetChanged(); } } } //list_8.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/list_8_new_photo"/> <Button android:id="@+id/clear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/list_8_clear_photos"/> </LinearLayout> <!-- The frame layout is here since we will be showing either the empty view or the list view. --> <FrameLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" > <!-- Here is the list. Since we are using a ListActivity, we have to call it "@android:id/list" so ListActivity will find it --> <ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:drawSelectorOnTop="false"/> <!-- Here is the view to show if the list is emtpy --> <TextView android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="match_parent" android:text="list_8_no_photos"/> </FrameLayout> </LinearLayout>
A gallery of basic controls: Button, EditText, RadioButton, Checkbox, Spinner. This example uses the light theme.
package com.example.android.apis.view; // Need the following import to get access to the app resources, since this // class is in a sub-package. import com.example.android.apis.R; import android.app.Activity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.Spinner; /** * A gallery of basic controls: Button, EditText, RadioButton, Checkbox, * Spinner. This example uses the light theme. */ public class Controls1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button disabledButton = (Button) findViewById(R.id.button_disabled); disabledButton.setEnabled(false); Spinner s1 = (Spinner) findViewById(R.id.spinner1); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, mStrings); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); s1.setAdapter(adapter); } private static final String[] mStrings = { "Mercury", "Venus", "Earth", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune" }; } //main.xml <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/button" android:text="controls_1_save" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/button_disabled" android:text="controls_1_save" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> <LinearLayout android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/edit" android:layout_width="match_parent" android:layout_height="wrap_content"/> <EditText android:id="@+id/edit2" android:layout_width="match_parent" android:layout_height="wrap_content"/> </LinearLayout> <CheckBox android:id="@+id/check1" android:paddingBottom="24sp" android:paddingTop="24sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="controls_1_checkbox_1" /> <CheckBox android:id="@+id/check2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="controls_1_checkbox_2" /> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="controls_1_radiobutton_1" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="controls_1_radiobutton_2" /> </RadioGroup> <CheckBox android:id="@+id/star" style="?android:attr/starStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="controls_1_star" /> <ToggleButton android:id="@+id/toggle1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ToggleButton android:id="@+id/toggle2" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Spinner android:id="@+id/spinner1" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="true" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:text="textColorPrimary" android:textAppearance="?android:attr/textAppearanceLarge" android:focusable="true" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:text="textColorSecondary" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="?android:attr/textColorSecondary" android:focusable="true" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:text="textColorTertiary" android:textAppearance="?android:attr/textAppearanceLarge" android:textColor="?android:attr/textColorTertiary" android:focusable="true" /> <TextView style="?android:attr/listSeparatorTextViewStyle" android:text="listSeparatorTextViewStyle" android:layout_marginTop="5dip" /> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_marginTop="400dip" android:textAppearance="?android:attr/textAppearanceLarge" android:text="(And all inside of a ScrollView!)" /> </LinearLayout> </ScrollView>
Button Gallery
package app.test; import android.app.Activity; import android.os.Bundle; /** * A gallery of the different styles of buttons. */ public class Test extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <!-- Lots of buttons = need scrolling --> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <!-- Regular sized buttons --> <Button android:id="@+id/button_normal" android:text="buttons_1_normal" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <!-- Small buttons --> <Button android:id="@+id/button_small" style="?android:attr/buttonStyleSmall" android:text="buttons_1_small" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ToggleButton android:id="@+id/button_toggle" android:text="buttons_1_toggle" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </ScrollView>
Using Button to control MediaPlayer
package app.test; import android.app.Activity; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; public class Test extends Activity implements OnCompletionListener, OnTouchListener, OnClickListener { MediaPlayer mediaPlayer; View theView; Button stopButton, startButton; int position = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); stopButton = (Button) this.findViewById(R.id.StopButton); startButton = (Button) this.findViewById(R.id.StartButton); startButton.setOnClickListener(this); stopButton.setOnClickListener(this); theView = this.findViewById(R.id.theview); theView.setOnTouchListener(this); mediaPlayer = MediaPlayer.create(this, R.raw.a);//raw/a.mp3 mediaPlayer.setOnCompletionListener(this); mediaPlayer.start(); } public void onCompletion(MediaPlayer mp) { mediaPlayer.start(); mediaPlayer.seekTo(position); } public boolean onTouch(View v, MotionEvent me) { if (me.getAction() == MotionEvent.ACTION_MOVE) { if (mediaPlayer.isPlaying()) { position = (int) (me.getX() * mediaPlayer.getDuration() / theView .getWidth()); Log.v("SEEK", "" + position); mediaPlayer.seekTo(position); } } return true; } public void onClick(View v) { if (v == stopButton) { mediaPlayer.pause(); } else if (v == startButton) { mediaPlayer.start(); } } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:text="Start" android:id="@+id/StartButton" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <Button android:text="Stop" android:id="@+id/StopButton" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> <View android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/theview" /> </LinearLayout>
Set ToggleButton on/off text
package app.test; import android.app.Activity; import android.os.Bundle; public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:id="@+id/ccbtn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Basic Button" /> <ImageButton android:id="@+id/ccbtn2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Image Button" android:src="@drawable/icon" /> <ToggleButton android:id="@+id/ccbtn3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Toggle Button" android:textOff="Start" android:textOn="Stop" /> </LinearLayout>
Add key listener to add the new todo item when the middle D-pad button is pressed.
package app.test; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.View; import android.view.View.OnKeyListener; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.ListView; public class Test extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); ListView myListView = (ListView)findViewById(R.id.myListView); final EditText myEditText = (EditText)findViewById(R.id.myEditText); final ArrayList<String> todoItems = new ArrayList<String>(); final ArrayAdapter<String> aa = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,todoItems); myListView.setAdapter(aa); myEditText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) { todoItems.add(0, myEditText.getText().toString()); myEditText.setText(""); aa.notifyDataSetChanged(); return true; } return false; } }); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/myEditText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="New To Do Item" /> <ListView android:id="@+id/myListView" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
Clear RadioButton selection
package app.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.RadioGroup; public class Test extends Activity implements View.OnClickListener { private RadioGroup mRadioGroup; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setTitle("RadioGroupActivity"); mRadioGroup = (RadioGroup) findViewById(R.id.menu); Button clearButton = (Button) findViewById(R.id.clear); clearButton.setOnClickListener(this); } public void onClick(View v) { mRadioGroup.clearCheck(); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:checkedButton="@+id/lunch" android:id="@+id/menu"> <RadioButton android:text="breakfast" android:id="@+id/breakfast" /> <RadioButton android:text="lunch" android:id="@id/lunch" /> <RadioButton android:text="dinner" android:id="@+id/dinner" /> <RadioButton android:text="all" android:id="@+id/all" /> </RadioGroup> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Clear" android:id="@+id/clear" /> </LinearLayout>
Using ImageButton
package app.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; public class Test extends Activity { CheckBox plain_cb; CheckBox serif_cb; CheckBox italic_cb; CheckBox bold_cb; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle("ImageButtonActivity"); setContentView(R.layout.main); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ImageButton" /> <ImageButton android:id="@+id/imagebutton" android:src="@drawable/icon" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>
Show or hide button
package app.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Test extends Activity { OnClickListener listener1 = null; OnClickListener listener2 = null; Button button1; Button button2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); listener1 = new OnClickListener() { public void onClick(View v) { setTitle("button1"); button1.setVisibility(View.INVISIBLE); button2.setVisibility(View.VISIBLE); } }; listener2 = new OnClickListener() { public void onClick(View v) { setTitle("button2"); button2.setVisibility(View.INVISIBLE); button1.setVisibility(View.VISIBLE); } }; setContentView(R.layout.main); button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(listener1); button2 = (Button) findViewById(R.id.button2); button2.setOnClickListener(listener2); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <EditText android:id="@+id/speed" android:maxLines="1" android:layout_marginTop="2dip" android:layout_width="wrap_content" android:ems="25" android:layout_height="wrap_content" android:autoText="true" android:scrollHorizontally="true" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button1" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text=" button2" /> </LinearLayout>
Set Button width and height
package app.test; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; public class Test extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); final Button button = (Button) findViewById(R.id.testButton); final Button changeButton = (Button) findViewById(R.id.layoutButton); changeButton.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { changeOption(button); } }); final Button changeButton2 = (Button) findViewById(R.id.textColorButton); changeButton2.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { changeOption2(button); } }); } public void changeOption(Button button) { if (button.getHeight() == 100) { button.setHeight(30); } else { button.setHeight(100); } } public void changeOption2(Button button) { button.setTextColor(Color.RED); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:id="@+id/testButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is the test Button"/> <Button android:id="@+id/layoutButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Change Layout"/> <Button android:id="@+id/textColorButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Change Text Color"/> </LinearLayout>
Is ToggleButton selected
package app.test; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Toast; import android.widget.ToggleButton; public class Test extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnOpen = (Button) findViewById(R.id.btnOpen); btnOpen.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { String str = "You have clicked the Open button"; DisplayToast(str); } }); Button btnSave = (Button) findViewById(R.id.btnSave); btnSave.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { DisplayToast("You have clicked the Save button"); } }); CheckBox checkBox = (CheckBox) findViewById(R.id.chkAutosave); checkBox.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (((CheckBox) v).isChecked()) DisplayToast("CheckBox is checked"); else DisplayToast("CheckBox is unchecked"); } }); RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rdbGp1); radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton rb1 = (RadioButton) findViewById(R.id.rdb1); if (rb1.isChecked()) { DisplayToast("Option 1 checked!"); } else { DisplayToast("Option 2 checked!"); } } }); ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggle1); toggleButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (((ToggleButton) v).isChecked()) DisplayToast("Toggle button is On"); else DisplayToast("Toggle button is Off"); } }); } private void DisplayToast(String msg) { Toast.makeText(getBaseContext(), msg, Toast.LENGTH_SHORT).show(); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/btnSave" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Save" /> <Button android:id="@+id/btnOpen" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Open" /> <ImageButton android:id="@+id/btnImg1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:src="@drawable/icon" /> <EditText android:id="@+id/txtName" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <CheckBox android:id="@+id/chkAutosave" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Autosave" /> <CheckBox android:id="@+id/star" style="?android:attr/starStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioGroup android:id="@+id/rdbGp1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <RadioButton android:id="@+id/rdb1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 1" /> <RadioButton android:id="@+id/rdb2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Option 2" /> </RadioGroup> <ToggleButton android:id="@+id/toggle1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
Set Button text in xml file
package app.test; import android.app.Activity; import android.os.Bundle; public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="This is my first Android Application!" /> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="And this is a clickable button!" /> </LinearLayout> //strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">HelloWorld</string> </resources>
ImageButton Demo
package com.commonsware.android.images; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.text.Html; import android.view.View; import android.widget.Button; import android.widget.ImageButton; import android.widget.EditText; import android.widget.TextView; public class ImagesDemo extends Activity { EditText name; TextView result; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); name=(EditText)findViewById(R.id.name); result=(TextView)findViewById(R.id.result); ImageButton btn=(ImageButton)findViewById(R.id.format); btn.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { applyFormat(); } }); } private void applyFormat() { String format=getString(R.string.funky_format); String simpleResult=String.format(format, TextUtils.htmlEncode(name.getText().toString())); result.setText(Html.fromHtml(simpleResult)); } } //res\layout\main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/format" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/icon" /> <EditText android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:id="@+id/result" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> //res\values\strings.xml <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">StringsDemo</string> <string name="funky_format">My name is <b>%1$s</b></string> </resources>
Using switch statement to check the RadioButton selection
package app.test; import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.widget.LinearLayout; import android.widget.RadioGroup; public class Test extends Activity implements RadioGroup.OnCheckedChangeListener { RadioGroup orientation; RadioGroup gravity; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.main); orientation = (RadioGroup) findViewById(R.id.orientation); orientation.setOnCheckedChangeListener(this); gravity = (RadioGroup) findViewById(R.id.gravity); gravity.setOnCheckedChangeListener(this); } public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { case R.id.horizontal: orientation.setOrientation(LinearLayout.HORIZONTAL); break; case R.id.vertical: orientation.setOrientation(LinearLayout.VERTICAL); break; case R.id.left: gravity.setGravity(Gravity.LEFT); break; case R.id.center: gravity.setGravity(Gravity.CENTER_HORIZONTAL); break; case R.id.right: gravity.setGravity(Gravity.RIGHT); break; } } } //main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <RadioGroup android:id="@+id/orientation" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="5px"> <RadioButton android:id="@+id/horizontal" android:text="horizontal" /> <RadioButton android:id="@+id/vertical" android:text="vertical" /> </RadioGroup> <RadioGroup android:id="@+id/gravity" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="5px"> <RadioButton android:id="@+id/left" android:text="left" /> <RadioButton android:id="@+id/center" android:text="center" /> <RadioButton android:id="@+id/right" android:text="right" /> </RadioGroup> </LinearLayout>