implementation 'jp.wasabeef:richeditor-android:1.2.2'
implementation 'com.afollestad.material-dialogs:core:0.9.6.0'
<jp.wasabeef.richeditor.RichEditor
android:id="@+id/editor"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
package com.example.hasee.myapplication;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.text.Html;
import android.text.Spanned;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
import jp.wasabeef.richeditor.RichEditor;
/**
* setType 0:post
* 1:vote
* 2:live
* 3:photo
*/
public class MainActivity extends FragmentActivity {
DrawerLayout mainlayout;
String str="www.baidu.com";
private RadioButton black, red, blue, green,f_i,f_h1,f_h2,f_h3,f_h4;
private ImageButton color_select,font_bold,link,pic;
private Spinner spinner;
private Button back;
private FragmentPost fragmentPost;
private FragmentVote fragmentVote;
private FragmentLive fragmentLive;
private FragmentPhoto fragmentPhoto;
private TextView topic;
private int ENTRY_CODE = 0; //入口,显示不同发帖
private EditText ed;
private int show=View.GONE;
private LinearLayout color_bar;
RichEditor mEditor1, mEditor2;
android.support.v4.app.FragmentManager fm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activty_main);
spinner = findViewById(R.id.postType);
final List<String> list = getDatas();
fm = getSupportFragmentManager();
if (0 == ENTRY_CODE) {
setType(0);
} else {
setType(1);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);
spinner.setAdapter(adapter);
spinner.setSelection(0, true);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String data = (String) spinner.getItemAtPosition(position);
if (0 == position) {
setType(0);
Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();
} else if (1 == position) {
setType(1);
Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();
} else if (2 == position) {
setType(2);
Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();
} else if (3 == position) {
setType(3);
Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
/**
* 点击侧滑效果
*/
mainlayout = findViewById(R.id.mainlayout);
topic = findViewById(R.id.topic);
topic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainlayout.openDrawer(GravityCompat.END);
}
});
back = findViewById(R.id.back);
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mainlayout.closeDrawer(GravityCompat.END);
}
});
color_bar = findViewById(R.id.color_bar);
color_select = findViewById(R.id.color_select);
color_select.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
f_i=findViewById(R.id.font_i);
f_h1=findViewById(R.id.h1);
f_h2=findViewById(R.id.h2);
f_h3=findViewById(R.id.h3);
f_h4=findViewById(R.id.h4);
font_bold=findViewById(R.id.font_bold);
f_i.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setItalic();
}
});
f_h1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setEditorFontSize(25);
}
});
f_h2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setEditorFontSize(20);
}
});
f_h3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setEditorFontSize(15);
}
});
font_bold.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setBold();
}
});
pic=findViewById(R.id.pic);
pic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.focusEditor();
// ActivityCompat.requestPermissions(MainActivity.this, mPermissionList, 100);
}
});
link=findViewById(R.id.link);
link.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.insertLink(str,str);
}
});
}
@Override
protected void onStart() {
super.onStart();
ed = findViewById(R.id.postText);
black = findViewById(R.id.black);
red = findViewById(R.id.red);
blue = findViewById(R.id.blue);
green = findViewById(R.id.green);
mEditor1 = findViewById(R.id.editor);
mEditor2 = findViewById(R.id.postTitle);
//初始化编辑高度
// mEditor.setEditorHeight(200);
//初始化字体大小
mEditor1.setEditorFontSize(18);
mEditor2.setEditorFontSize(18);
//初始化字体颜色
mEditor1.setEditorFontColor(Color.BLACK);
mEditor2.setEditorFontColor(Color.BLACK);
//mEditor.setEditorBackgroundColor(Color.BLUE);
//初始化内边距
mEditor1.setPadding(10, 10, 10, 10);
mEditor2.setPadding(10, 10, 10, 10);
//设置编辑框背景,可以是网络图片
// mEditor.setBackground("https://raw.githubusercontent.com/wasabeef/art/master/chip.jpg");
// mEditor.setBackgroundColor(Color.BLUE);
//设置默认显示语句
mEditor1.setPlaceholder("请输入正文内容");
mEditor2.setPlaceholder("请输入帖子标题");
//设置编辑器是否可用
mEditor1.setInputEnabled(true);
mEditor2.setInputEnabled(true);
mEditor1.setOnTextChangeListener(new RichEditor.OnTextChangeListener() {
@Override
public void onTextChange(String text) {
// ed.setText(text);
Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();
text.length();
}
});
black.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setTextColor(Color.BLACK);
mEditor2.setTextColor(Color.BLACK);
}
});
red.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setTextColor(Color.RED);
mEditor2.setTextColor(Color.RED);
}
});
blue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setTextColor(Color.BLUE);
mEditor2.setTextColor(Color.BLUE);
}
});
green.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mEditor1.setTextColor(Color.GREEN);
mEditor2.setTextColor(Color.GREEN);
}
});
}
public List<String> getDatas() {
List<String> list = new ArrayList<>();
list.add("发布帖子");
list.add("发布投票");
list.add("发布直播");
list.add("发布图片");
return list;
}
private void setType(int index) {
android.support.v4.app.FragmentTransaction ft = fm.beginTransaction();
hideFragment(ft);
switch (index) {
case 0:
if (fragmentPost == null) {
fragmentPost = new FragmentPost();
ft.add(R.id.fragment_container, fragmentPost);
} else {
ft.show(fragmentPost);
}
break;
case 1:
if (fragmentVote == null) {
fragmentVote = new FragmentVote();
ft.add(R.id.fragment_container, fragmentVote);
}
ft.show(fragmentVote);
break;
case 2:
if (fragmentLive == null) {
fragmentLive = new FragmentLive();
ft.add(R.id.fragment_container, fragmentLive);
}
ft.show(fragmentLive);
break;
case 3:
if (fragmentPhoto == null) {
fragmentPhoto = new FragmentPhoto();
ft.add(R.id.fragment_container, fragmentPhoto);
}
ft.show(fragmentPhoto);
break;
}
ft.commit();
}
private void hideFragment(FragmentTransaction ft) {
if (fragmentPost != null) {
ft.hide(fragmentPost);
}
if (fragmentVote != null) {
ft.hide(fragmentVote);
}
if (fragmentLive != null) {
ft.hide(fragmentLive);
}
if (fragmentPhoto != null) {
ft.hide(fragmentPhoto);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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=".MainActivity"
tools:layout_editor_absoluteY="81dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">
<jp.wasabeef.richeditor.RichEditor
android:id="@+id/postTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#b1b0b0"
/>
<jp.wasabeef.richeditor.RichEditor
android:id="@+id/editor"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:padding="8dp"/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>