收藏夹增加分类

This commit is contained in:
sonichy 2023-02-22 19:50:16 +08:00
parent 566e7030c0
commit fb386af64f
9 changed files with 179 additions and 40 deletions

BIN
app.apk

Binary file not shown.

View File

@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hty.browser" package="com.hty.browser"
android:versionCode="4" android:versionCode="4"
android:versionName="4.28"> android:versionName="4.29">
<application <application
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"

View File

@ -9,7 +9,7 @@ p { text-indent:2em; }
</style> </style>
</head> </head>
<body> <body>
<h2 align=center><img src=logo.png><br>海天鹰浏览器 V4.28</h2> <h2 align=center><img src=logo.png><br>海天鹰浏览器 V4.29</h2>
<p>内置扩展的浏览器。</p> <p>内置扩展的浏览器。</p>
<p>扩展:链接关键字过滤,链接关键字高亮,图片自定义过滤,视频独立播放。</p> <p>扩展:链接关键字过滤,链接关键字高亮,图片自定义过滤,视频独立播放。</p>
<p>作者:海天鹰</p> <p>作者:海天鹰</p>
@ -23,6 +23,7 @@ p { text-indent:2em; }
<p><a href="https://stackoverflow.com/questions/3462582/display-the-android-webviews-favicon" target="_blank">获取网页图标</a></p> <p><a href="https://stackoverflow.com/questions/3462582/display-the-android-webviews-favicon" target="_blank">获取网页图标</a></p>
<p><a href="https://www.jianshu.com/p/c9a18050a249" target="_blank">字符串转Bitmap</a></p> <p><a href="https://www.jianshu.com/p/c9a18050a249" target="_blank">字符串转Bitmap</a></p>
<h3>更新日志:</h3> <h3>更新日志:</h3>
<h3>V4.29 (2023-02-22)</h3><ol><li>收藏夹增加分类。</li></ol>
<h3>V4.28 (2022-11-07)</h3><ol><li>资源探查脚本支持返回多个对象。<br>分类标题增加数量。<br>使用 &lt;details&gt; 代替 &lt;div&gt;,分类可折叠。</li></ol> <h3>V4.28 (2022-11-07)</h3><ol><li>资源探查脚本支持返回多个对象。<br>分类标题增加数量。<br>使用 &lt;details&gt; 代替 &lt;div&gt;,分类可折叠。</li></ol>
<h3>V4.27 (2022-10-22)</h3><ol><li>修改收藏夹数据库目录。</li><li>收藏夹增加分享数据库功能。</li></ol> <h3>V4.27 (2022-10-22)</h3><ol><li>修改收藏夹数据库目录。</li><li>收藏夹增加分享数据库功能。</li></ol>
<h3>V4.26 (2022-07-23)</h3><ol><li>增加页面信息。</li><li>增加资源探查。</li></ol> <h3>V4.26 (2022-07-23)</h3><ol><li>增加页面信息。</li><li>增加资源探查。</li></ol>

View File

@ -11,7 +11,7 @@ import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper { public class DBHelper extends SQLiteOpenHelper {
public static final String filename = "webfav.db"; public static final String filename = "webfav.db";
public static final String DATABASE_NAME = MainActivity.dir + File.separator + filename; public static final String DATABASE_NAME = MainActivity.dir + File.separator + filename;
private final static int VERSION = 1; private final static int VERSION = 3;
static String TableName = "webfav"; static String TableName = "webfav";
private SQLiteDatabase db; private SQLiteDatabase db;
private static DBHelper mInstance = null; private static DBHelper mInstance = null;
@ -30,28 +30,30 @@ public class DBHelper extends SQLiteOpenHelper {
@Override @Override
public void onCreate(SQLiteDatabase db) { public void onCreate(SQLiteDatabase db) {
this.db = db; this.db = db;
db.execSQL("CREATE TABLE webfav (_id INTEGER PRIMARY KEY , website TEXT, title TEXT)"); db.execSQL("CREATE TABLE webfav (_id INTEGER PRIMARY KEY , website TEXT, title TEXT, category TEXT)");
} }
@Override @Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// db.execSQL("DROP TABLE IF EXISTS battery");
// onCreate(db);
switch (newVersion) { switch (newVersion) {
case 6: case 3:
String sql = "CREATE TABLE category (_id INTEGER PRIMARY KEY , category TEXT)";
db.execSQL(sql);
sql = "ALTER TABLE " + TableName + " ADD COLUMN category TEXT default ''";
db.execSQL(sql);
break; break;
} }
} }
public void insert(ContentValues values) { public void insert(String tableName, ContentValues values) {
db = getWritableDatabase(); db = getWritableDatabase();
db.insert(TableName, null, values); db.insert(tableName, null, values);
db.close(); db.close();
} }
public Cursor query(String s) { public Cursor query(String s) {
db = getWritableDatabase(); db = getWritableDatabase();
Cursor c = null; Cursor c;
if (s.equals("")) { if (s.equals("")) {
c = db.query(TableName, null, null, null, null, null, "_id desc"); c = db.query(TableName, null, null, null, null, null, "_id desc");
} else { } else {
@ -60,6 +62,28 @@ public class DBHelper extends SQLiteOpenHelper {
return c; return c;
} }
public Cursor queryCategoty(String s) {
db = getWritableDatabase();
Cursor c;
if (s.equals("无分类")) {
c = db.query(TableName, null, "category = ''", null, null, null, "_id desc");
} else {
c = db.query(TableName, null, "category = '" + s + "'", null, null, null, "_id desc");
}
return c;
}
public Cursor category(String s) {
db = getWritableDatabase();
Cursor c;
if (s.equals("")) {
c = db.query("category", null, null, null, null, null, "category asc");
} else {
c = db.query("category", null, "category = '" + s + "'", null, null, null, null);
}
return c;
}
public void del(int id) { public void del(int id) {
if (db == null) if (db == null)
db = getWritableDatabase(); db = getWritableDatabase();

View File

@ -12,6 +12,7 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.provider.MediaStore;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.Log; import android.util.Log;
@ -27,12 +28,17 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ListView; import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.ScrollView;
import android.widget.SimpleCursorAdapter; import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@ -40,10 +46,12 @@ import java.io.BufferedWriter;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.ArrayList;
public class FavoriteActivity extends Activity { public class FavoriteActivity extends Activity {
EditText editText; EditText editText;
ImageButton imageButton_clear; ImageButton imageButton_clear;
RadioGroup radioGroup;
InputMethodManager IMM; InputMethodManager IMM;
ListView listView; ListView listView;
SimpleCursorAdapter adapter; SimpleCursorAdapter adapter;
@ -60,7 +68,11 @@ public class FavoriteActivity extends Activity {
imageButton_clear.setVisibility(View.GONE); imageButton_clear.setVisibility(View.GONE);
editText = (EditText) findViewById(R.id.editText); editText = (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(new EditChangedListener()); editText.addTextChangedListener(new EditChangedListener());
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
genCategory();
listView = (ListView) findViewById(R.id.listView1); listView = (ListView) findViewById(R.id.listView1);
listView.setOnItemClickListener(new OnItemClickListener() { listView.setOnItemClickListener(new OnItemClickListener() {
@Override @Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
@ -72,6 +84,7 @@ public class FavoriteActivity extends Activity {
finish(); finish();
} }
}); });
listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() { listView.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
@Override @Override
public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {
@ -85,6 +98,7 @@ public class FavoriteActivity extends Activity {
} }
} }
}); });
listView.setOnTouchListener(new View.OnTouchListener() { listView.setOnTouchListener(new View.OnTouchListener() {
@Override @Override
public boolean onTouch(View v, MotionEvent event) { public boolean onTouch(View v, MotionEvent event) {
@ -92,12 +106,15 @@ public class FavoriteActivity extends Activity {
return false; return false;
} }
}); });
search(editText.getText().toString());
//search(0, "");
RadioButton radioButton = (RadioButton) radioGroup.getChildAt(0);
radioButton.performClick();
} }
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
String[] sm = { "分享数据库", "导出HTML", "导出CSV" }; String[] sm = { "新建分类", "分享数据库", "导出HTML", "导出CSV" };
for (int i=0; i<sm.length; i++) { for (int i=0; i<sm.length; i++) {
menu.add(0, i, i, sm[i]); menu.add(0, i, i, sm[i]);
} }
@ -109,6 +126,32 @@ public class FavoriteActivity extends Activity {
int id = item.getItemId(); int id = item.getItemId();
switch (id) { switch (id) {
case 0: case 0:
AlertDialog.Builder builder = new AlertDialog.Builder(FavoriteActivity.this);
builder.setIcon(android.R.drawable.ic_input_add);
builder.setTitle("新建分类");
final EditText editText1 = new EditText(this);
builder.setView(editText1);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String s = editText1.getText().toString();
DBHelper helper = new DBHelper(getApplicationContext());
Cursor c = helper.category(s);
if (c.getCount() == 0) {
ContentValues values = new ContentValues();
values.put("category", s);
helper.insert("category", values);
IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0);
genCategory();
} else {
Toast.makeText(getApplicationContext(), "分类已存在", Toast.LENGTH_SHORT).show();
}
}
});
builder.setNegativeButton("取消", null);
builder.create().show();
break;
case 1:
File file = new File(DBHelper.DATABASE_NAME); File file = new File(DBHelper.DATABASE_NAME);
if (file.exists()) { if (file.exists()) {
Intent intent = new Intent(); Intent intent = new Intent();
@ -120,7 +163,7 @@ public class FavoriteActivity extends Activity {
Toast.makeText(getApplicationContext(), "数据库文件不存在", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "数据库文件不存在", Toast.LENGTH_SHORT).show();
} }
break; break;
case 1: case 2:
String s = "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"/>\n<title>收藏夹</title>\n<style>a { text-decoration:none; }\ntable { table-layout:fixed; width:100%; border-collapse:collapse; }\nth, td { border:1px solid black; padding:5px; overflow:hidden; text-overflow: ellipsis; }\n</style>\n</head>\n<body>\n<h2 align=center>收藏夹" + adapter.getCount() + "</h2>\n<table>\n<tr><th>标题</th><th>网址</th></tr>\n"; String s = "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no\"/>\n<title>收藏夹</title>\n<style>a { text-decoration:none; }\ntable { table-layout:fixed; width:100%; border-collapse:collapse; }\nth, td { border:1px solid black; padding:5px; overflow:hidden; text-overflow: ellipsis; }\n</style>\n</head>\n<body>\n<h2 align=center>收藏夹" + adapter.getCount() + "</h2>\n<table>\n<tr><th>标题</th><th>网址</th></tr>\n";
for (int i=0; i<adapter.getCount(); i++){ for (int i=0; i<adapter.getCount(); i++){
LinearLayout layout = (LinearLayout) listView.getAdapter().getView(i, null, null); LinearLayout layout = (LinearLayout) listView.getAdapter().getView(i, null, null);
@ -131,7 +174,7 @@ public class FavoriteActivity extends Activity {
s += "</table>\n</body>\n</html>"; s += "</table>\n</body>\n</html>";
writeFile("webfav.htm", s); writeFile("webfav.htm", s);
break; break;
case 2: case 3:
s = ""; s = "";
for (int i=0; i<adapter.getCount(); i++){ for (int i=0; i<adapter.getCount(); i++){
LinearLayout layout = (LinearLayout) listView.getAdapter().getView(i, null, null); LinearLayout layout = (LinearLayout) listView.getAdapter().getView(i, null, null);
@ -154,25 +197,26 @@ public class FavoriteActivity extends Activity {
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
position = listView.getFirstVisiblePosition(); position = listView.getFirstVisiblePosition();
final String sid = ((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString(); final String sid = ((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString();
final String stitle = ((TextView) menuInfo.targetView.findViewById(R.id.title)).getText().toString(); final String title = ((TextView) menuInfo.targetView.findViewById(R.id.title)).getText().toString();
final String surl = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString(); final String url = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString();
final String category = ((TextView) menuInfo.targetView.findViewById(R.id.category)).getText().toString();
switch (item.getItemId()) { switch (item.getItemId()) {
case 0: case 0:
Intent intent = new Intent(FavoriteActivity.this, MainActivity.class); Intent intent = new Intent(FavoriteActivity.this, MainActivity.class);
intent.putExtra("url", surl); intent.putExtra("url", url);
intent.putExtra("newWindow", true); intent.putExtra("newWindow", true);
setResult(RESULT_OK, intent); setResult(RESULT_OK, intent);
finish(); finish();
break; break;
case 1: case 1:
ClipboardManager CM = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipboardManager CM = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
CM.setPrimaryClip(ClipData.newPlainText("link", surl)); CM.setPrimaryClip(ClipData.newPlainText("link", url));
Toast.makeText(getApplicationContext(), "链接已复制", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "链接已复制", Toast.LENGTH_SHORT).show();
break; break;
case 2: case 2:
intent = new Intent(); intent = new Intent();
intent.setAction(Intent.ACTION_SEND); intent.setAction(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_TEXT, stitle + "\n" + surl); intent.putExtra(Intent.EXTRA_TEXT, title + "\n" + url);
intent.setType("text/plain"); intent.setType("text/plain");
startActivity(Intent.createChooser(intent, "分享")); startActivity(Intent.createChooser(intent, "分享"));
break; break;
@ -181,12 +225,27 @@ public class FavoriteActivity extends Activity {
layout.setOrientation(LinearLayout.VERTICAL); layout.setOrientation(LinearLayout.VERTICAL);
final EditText ET_title = new EditText(FavoriteActivity.this); final EditText ET_title = new EditText(FavoriteActivity.this);
ET_title.setHint("标题"); ET_title.setHint("标题");
ET_title.setText(stitle); ET_title.setText(title);
layout.addView(ET_title); layout.addView(ET_title);
final EditText ET_url = new EditText(FavoriteActivity.this); final EditText ET_url = new EditText(FavoriteActivity.this);
ET_title.setHint("网址"); ET_title.setHint("网址");
ET_url.setText(surl); ET_url.setText(url);
layout.addView(ET_url); layout.addView(ET_url);
final Spinner spinner = new Spinner(this);
ArrayList<String> list = new ArrayList<>();
list.add("");
DBHelper helper = new DBHelper(this);
Cursor cursor = helper.category("");
if (cursor != null) {
while (cursor.moveToNext()) {
String s = cursor.getString(cursor.getColumnIndex("category"));
list.add(s);
}
}
ArrayAdapter adapter = new ArrayAdapter(getApplicationContext(), android.R.layout.simple_spinner_item, list);
spinner.setAdapter(adapter);
spinner.setSelection(list.indexOf(category));
layout.addView(spinner);
AlertDialog.Builder builder = new AlertDialog.Builder(FavoriteActivity.this); AlertDialog.Builder builder = new AlertDialog.Builder(FavoriteActivity.this);
builder.setIcon(android.R.drawable.btn_star_big_on); builder.setIcon(android.R.drawable.btn_star_big_on);
builder.setTitle("修改收藏"); builder.setTitle("修改收藏");
@ -202,7 +261,6 @@ public class FavoriteActivity extends Activity {
field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);//设置该属性可以访问 field.setAccessible(true);//设置该属性可以访问
} catch (Exception ex) { } catch (Exception ex) {
} }
if (!stitle.equals("") && (surl.startsWith("http") || !surl.startsWith("file:///"))) { if (!stitle.equals("") && (surl.startsWith("http") || !surl.startsWith("file:///"))) {
DBHelper dbHelper = new DBHelper(getApplicationContext()); DBHelper dbHelper = new DBHelper(getApplicationContext());
@ -210,9 +268,12 @@ public class FavoriteActivity extends Activity {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put("website", surl); values.put("website", surl);
values.put("title", stitle); values.put("title", stitle);
values.put("category", spinner.getSelectedItem().toString());
db.update(DBHelper.TableName, values, "_id = " + sid, null); db.update(DBHelper.TableName, values, "_id = " + sid, null);
IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0);
search(editText.getText().toString()); RadioButton radioButton = (RadioButton) findViewById(radioGroup.getCheckedRadioButtonId());
//search(0, editText.getText().toString());
search(1, radioButton.getText().toString());
try { try {
//关闭 //关闭
field.set(dialog, true); field.set(dialog, true);
@ -258,9 +319,9 @@ public class FavoriteActivity extends Activity {
case 4: case 4:
position = listView.getFirstVisiblePosition(); position = listView.getFirstVisiblePosition();
int id = Integer.parseInt(((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString()); int id = Integer.parseInt(((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString());
DBHelper helper = new DBHelper(getApplicationContext()); helper = new DBHelper(getApplicationContext());
helper.del(id); helper.del(id);
search(editText.getText().toString()); search(0, editText.getText().toString());
break; break;
} }
return true; return true;
@ -277,13 +338,27 @@ public class FavoriteActivity extends Activity {
} }
} }
void search(String s) { class RadioButtonOnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
RadioButton radioButton = (RadioButton) v;
String s = radioButton.getText().toString();
search(1, s);
}
}
void search(int type, String s) {
DBHelper helper = new DBHelper(this); DBHelper helper = new DBHelper(this);
Cursor cursor1 = helper.query(s); Cursor cursor1 = null;
if (type == 0) {
cursor1 = helper.query(s);
} else if (type == 1) {
cursor1 = helper.queryCategoty(s);
}
int count = cursor1.getCount(); int count = cursor1.getCount();
setTitle("收藏夹" + count); setTitle("收藏夹 - " + s + " " + count);
String[] from = { "_id", "title", "website", "website" }; String[] from = { "_id", "title", "website", "category", "website" };
int[] to = { R.id.id, R.id.title, R.id.website, R.id.imageView_favicon }; int[] to = { R.id.id, R.id.title, R.id.website, R.id.category, R.id.imageView_favicon };
adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, cursor1, from, to, 0); adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, cursor1, from, to, 0);
adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){ adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){
public boolean setViewValue(View view, Cursor cursor, int columnIndex){ public boolean setViewValue(View view, Cursor cursor, int columnIndex){
@ -309,6 +384,25 @@ public class FavoriteActivity extends Activity {
listView.setSelection(position); listView.setSelection(position);
} }
void genCategory() {
radioGroup.removeAllViews();
DBHelper helper = new DBHelper(this);
Cursor cursor = helper.category("");
if (cursor != null) {
RadioButton radioButton = new RadioButton(this);
radioButton.setText("无分类");
radioButton.setOnClickListener(new RadioButtonOnClickListener());
radioGroup.addView(radioButton);
while (cursor.moveToNext()) {
String s = cursor.getString(cursor.getColumnIndex("category"));
radioButton = new RadioButton(this);
radioButton.setText(s);
radioButton.setOnClickListener(new RadioButtonOnClickListener());
radioGroup.addView(radioButton);
}
}
}
class EditChangedListener implements TextWatcher { class EditChangedListener implements TextWatcher {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) { public void beforeTextChanged(CharSequence s, int start, int count,int after) {
@ -320,12 +414,13 @@ public class FavoriteActivity extends Activity {
} }
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
if(s.toString().equals("")){ if (s.toString().equals("")) {
imageButton_clear.setVisibility(View.GONE); imageButton_clear.setVisibility(View.GONE);
}else{ } else {
imageButton_clear.setVisibility(View.VISIBLE); imageButton_clear.setVisibility(View.VISIBLE);
} }
search(s.toString()); search(0, s.toString());
radioGroup.clearCheck();
} }
} }

View File

@ -742,7 +742,7 @@ public class MainActivity extends Activity {
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put("website", surl); values.put("website", surl);
values.put("title", stitle); values.put("title", stitle);
helper.insert(values); helper.insert("webfav", values);
IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0);
} else { } else {
Toast.makeText(getApplicationContext(), "网址已存在", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "网址已存在", Toast.LENGTH_SHORT).show();

View File

@ -1,10 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical">
tools:context=".FavoriteActivity" >
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -26,7 +25,7 @@
android:paddingTop="5dp" android:paddingTop="5dp"
android:paddingRight="10dp" android:paddingRight="10dp"
android:paddingBottom="5dp" android:paddingBottom="5dp"
android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium"/> android:textAppearance="@android:style/TextAppearance.DeviceDefault.Medium" />
<ImageButton <ImageButton
android:id="@+id/imageButton_clear" android:id="@+id/imageButton_clear"
@ -39,6 +38,19 @@
android:src="@android:drawable/ic_menu_close_clear_cancel" /> android:src="@android:drawable/ic_menu_close_clear_cancel" />
</LinearLayout> </LinearLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scrollbars="none">
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" />
</HorizontalScrollView>
<ListView <ListView
android:id="@+id/listView1" android:id="@+id/listView1"
android:layout_width="fill_parent" android:layout_width="fill_parent"

View File

@ -52,6 +52,13 @@
android:singleLine="true" android:singleLine="true"
android:text="website"/> android:text="website"/>
<TextView
android:id="@+id/category"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>

View File

@ -1 +1 @@
4.28 4.29