読者です 読者をやめる 読者になる 読者になる

liguofeng29’s blog

個人勉強用ブログだっす。

AndroidのUI - ContextMenu

        

 
activity_main.xml
 
<?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: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=".MainActivity">

<TextView
android:id="@+id/text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ここを長押しするとContextMenu表示"
android:textSize="20dp"
/>
</RelativeLayout>
  
MainActivity.java
 
package com.example.liguofeng.contextmenu;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
// 単一選択メニュ
final int ITEM_GROUP_01 = 0x122;
final int ITEM_GROUP_02 = 0x123;
final int ITEM_GROUP_03 = 0x124;

TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (TextView) findViewById(R.id.text);

// ① ContextMenu登録
registerForContextMenu(text); // ここ長押しでContextmenu表示!!
}

// ② ContextMenu生成
@Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ContextMenuInfo menuInfo) {
menu.add(10, ITEM_GROUP_01, 0, "RED").setChecked(true);
menu.add(10, ITEM_GROUP_02, 0, "BLUE");
menu.add(10, ITEM_GROUP_03, 0, "GREEN");
menu.setGroupCheckable(10, true, true);
menu.setHeaderTitle("select font color");
}

// ③ callback
@Override
public boolean onContextItemSelected (MenuItem mi) {
switch (mi.getItemId()) {
case ITEM_GROUP_01:
mi.setChecked(true); // なぜかこれ聞かないな
text.setTextColor(Color.RED);
break;
case ITEM_GROUP_02:
mi.setChecked(true); // なぜかこれ聞かないな
text.setTextColor(Color.BLUE);
break;
case ITEM_GROUP_03:
mi.setChecked(true); // なぜかこれ聞かないな
text.setTextColor(Color.GREEN);;
break;
}
return true;
}
}