長押しでメニュー表示+フォントのカスタマイズ
初期画面
メニュー表示画面
機能
- TextViewの表示
- TextView長押し → メニュー表示
ポイント
長押しでメニュー表示する
- registerForContextMenu(View view)
- onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
- onContextItemSelected(MenuItem item)
の3つのメソッドを使う(詳細はコード参照)
techbooster.org
フォントのカスタマイズ
Projectビューにする → app > mainの下にassetsフォルダを作る → ttfファイルを追加
必要なファイル
activity_main.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:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.orisa.mymenu1.MainActivity"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:layout_margin="10dp" android:elevation="3dp" android:fontFamily="casual" android:padding="10dp" android:text="資料を作る" android:textAppearance="@style/TextAppearance.AppCompat.Medium" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </RelativeLayout>
MainActivity.java
package com.example.orisa.mymenu1; import android.graphics.Color; import android.graphics.Typeface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //ContextMenu用の定数 static final int MENU_ID_EDIT = 0; static final int MENU_ID_DELETE = 1; TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.tv); //背景色を指定 tv.setBackgroundColor(Color.parseColor("#FFD740")); registerForContextMenu(tv); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); //Menuに項目を追加する menu.add(0, MENU_ID_EDIT, 0, "edit"); menu.add(0, MENU_ID_DELETE, 0, "delete"); } //Menuの項目をクリックしたときの動作 @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()){ case MENU_ID_EDIT: Toast.makeText(MainActivity.this, "edit", Toast.LENGTH_SHORT).show(); return true; case MENU_ID_DELETE: Toast.makeText(MainActivity.this, "delete", Toast.LENGTH_SHORT).show(); return true; default: return super.onContextItemSelected(item); } } }