我正在尝试使用自己的自定义字体实现自定义textview.
有没有办法在做Super.onDraw()之前设置字体?
以便将常用字体替换为我想要使用的自定义字体.
就像是:
protected void onDraw(Canvas canvas)
{
Typeface font1 = Typeface.createFromAsset(context.getAssets(), "fonts/myfonts.ttf");
this.setTypeface(font1);
this.setTextSize(18);
super.onDraw(canvas);
}
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码不起作用.
或者我别无选择,只能使用drawText()来做到这一点?
我喜欢在scrollview中嵌入10+ textview来提供ListView效果(由于某些特殊原因,我不想在这里使用ListView).
关于textview的一些细节是它有一个背景,它是一个图像.
所以我的问题是,当我点击我所拥有的10多个视图中的特定文本视图时,我想要像原生ListView中的那些那样为背景设置动画.如果有可能,有人可以提供一些指示吗?
如果没有为背景设置动画,我们可以至少为点击的文本视图的边框设置动画效果吗?
谢谢,萨娜.
我只是想不出来.我在res/drawable/start_light.xml中有这个形状
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="20dp"
android:thickness="0dp"
android:useLevel="false">
<solid android:color="#FF0000" />
</shape>
Run Code Online (Sandbox Code Playgroud)
在res/values/styles.xml中我有:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<style name="StartLight">
<item name="android:layout_height">50dp</item>
<item name="android:layout_width">50dp</item>
<item name="android:background">@drawable/start_light</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
在主要布局中我有:
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_gravity="center_horizontal"
android:layout_width="wrap_content"
android:gravity="center_vertical" android:layout_height="150dp">
<ImageView android:src="@drawable/start_light" android:id="@+id/light5" android:layout_width="50dp" android:layout_height="50dp"></ImageView>
<View style="@style/StartLight" android:id="@+id/light4"></View>
<View style="@style/StartLight" android:id="@+id/light3"></View>
<View style="@style/StartLight" android:id="@+id/light2"></View>
<View style="@style/StartLight" android:id="@+id/light1"></View>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
以太网方式,使用View或ImageView我在模拟器和设备上的布局中看不到任何红色圆圈.在xml图形设计师他们在那里.我在这里错过了什么?
Hai Friends我是Android的新手..如何从ArrayAdapter类导航到另一个活动class.i不知道如何导航.我知道"intent"关键字用于将一个活动导航到另一个活动..但现在我是使用ArrayAdapter类,如果我使用"intent"关键字来导航另一个活动,我会收到错误.
package org.ajsquare.test;
import android.content.Context;
import android.content.Intent;
import android.content.res.TypedArray;
import android.database.DataSetObserver;
import android.graphics.Color;
import android.sax.StartElementListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;
public class Teamname extends ArrayAdapter<String>
{
private LayoutInflater mInflater;
private String[] mStrings;
private TypedArray mimages;
String mteam=null;
private int mViewResourceId;
Context c;
public Teamname(Context context, int textViewResourceId,TypedArray images,String[] test) {
super(context, textViewResourceId,test);
c=context;
mimages=images;
mViewResourceId=textViewResourceId;
mInflater=(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mStrings=test;
}
public int getCount()
{
return mStrings.length;
}
public …Run Code Online (Sandbox Code Playgroud) android android-widget android-emulator android-intent android-layout
我正在构建一个具有多个按钮的小部件,每个按钮都将自己的意图发送给广播接收器.广播接收器假设基于按下哪个按钮显示Toast消息.代码目前看起来像这样:
public class WidgetProvider extends AppWidgetProvider {
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
ComponentName thisWidget = new ComponentName(context, WidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
// Set the text of the buttons
remoteViews.setTextViewText(R.id.widgetPreset1Button, prefs.getString("widget1", "Not set"));
remoteViews.setTextViewText(R.id.widgetPreset2Button, prefs.getString("widget2", "Not set"));
remoteViews.setTextViewText(R.id.widgetPreset3Button, prefs.getString("widget3", "Not set"));
remoteViews.setTextViewText(R.id.widgetPreset4Button, prefs.getString("widget4", "Not set"));
// Register the buttons with an OnClick event
Intent intent1 = new Intent("myapp.SendWidgetPreset");
intent1.putExtra("Widget", 1); …Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-widget android-intent android-pendingintent
我试图搜索有关StackView Widget的信息,我发现了很多,但没有人习惯从url获取数据.所以问题是,当我正在处理url时,我的RemoteViews为null,因此它们不会显示任何内容.一旦完成该过程,我想从asyntask更新那个RemoteViews(在同一个类中).我怎样才能做到这一点 ?或同步他们?
这是我的Widget服务代码:
public class RSSService extends RemoteViewsService {
private ManagerRSS mr;
private Cursor c;
private int lenght;
private List<Provider> mWidgetItems = new ArrayList<Provider>();
private RemoteViews rv = null;
public ArrayList<Item> result = new ArrayList<Item>();
private boolean isFinished = false;
@Override
public void onCreate() {
// TODO Auto-generated method stub
mr = new ManagerRSS(this.getApplicationContext());
mr.open();
mr.openRead();
c = mr.getCursor();
lenght = c.getCount();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
c.close();
mr.close();
super.onDestroy(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我连接Widget到应用程序的数据库,但我一无所知。
工作原理:
import android.app.Activity;
public class Widgets1 extends Activity{
mMioDbHelper = new SqlHelper(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
这不是吗?
import android.appwidget.AppWidgetProvider;
public class Widgets1 extends AppWidgetProvider{
mMioDbHelper = new SqlHelper(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
如何将小部件连接到数据库?我的意思是如何从小部件类进行查询?
谢谢。
我正在构建一个自定义启动器。我已经按照Android文档中提到的步骤来托管应用小部件以及浏览默认的Launcher源代码。但是,当我使用意图动作作为AppWidgetManager.ACTION_APPWIDGET_BIND调用startActivityForResult时,即使用户正在接受UI上显示的对话框提示,它也始终返回Activity.RESULT_CANCELED。
这是代码片段
appWidgetManager = AppWidgetManager.getInstance(this);
appWidgetHost = new AppWidgetHost(this, 7772);
int appWidgetId = appWidgetHost.allocateAppWidgetId();
Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
startActivityForResult(pickIntent, REQUEST_PICK);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, " onActivityResult " + requestCode + " res " + resultCode);
if (requestCode == REQUEST_PICK && resultCode == Activity.RESULT_OK)
{
int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
AppWidgetProviderInfo info = appWidgetManager.getAppWidgetInfo(appWidgetId);
boolean hasPermission = appWidgetManager.bindAppWidgetIdIfAllowed(appWidgetId, info.provider);
if (!hasPermission)
{
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_BIND);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, …Run Code Online (Sandbox Code Playgroud) 我有两个用于UserName和Password的EditText.第一个UserName EditText将是Visible.it将检查Valid UserName.然后,Password EditText将可见.我希望用户复制用户名但不想剪切.如何禁用剪切选项.但是下面的代码禁用所有选项.代码:
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
return false;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode actionMode, MenuItem menuItem) {
return false;
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
}
});
Run Code Online (Sandbox Code Playgroud)