目标:纯画布上的Android> = 1.6.
假设我想编写一个绘制(宽度,高度)大红色矩形的函数,然后在里面绘制一个黑色的Hello World文本.我希望文本在视觉上位于矩形的中心.所以让我们试试:
void drawHelloRectangle(Canvas c, int topLeftX,
int topLeftY, int width, int height) {
Paint mPaint = new Paint();
// height of 'Hello World'; height*0.7 looks good
int fontHeight = (int)(height*0.7);
mPaint.setColor(COLOR_RED);
mPaint.setStyle(Style.FILL);
c.drawRect( topLeftX, topLeftY, topLeftX+width, topLeftY+height, mPaint);
mPaint.setTextSize(fontHeight);
mPaint.setColor(COLOR_BLACK);
mPaint.setTextAlign(Align.CENTER);
c.drawText( "Hello World", topLeftX+width/2, ????, mPaint);
}
Run Code Online (Sandbox Code Playgroud)
现在我不知道在标记为drawText的参数中放什么????,即我不知道如何垂直对齐文本.
就像是
???? = topLeftY + height/2 + fontHeight/2 - fontHeight/8;
似乎或多或少有效,但必须有更好的方法.
如何将文本与TextView顶部对齐?
用于Swings setInsets()的等效Android API?
文本顶部应该从TextView的(0,0)开始
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="42sp"
android:paddingTop="0px"
android:gravity="top">
</TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
我已经使用了上面的片段,但是仍然输出不是预期的
任何想法?
我想做这样的事情.有人能指出我正确的方向吗?
现在,我正在使用Scale Animation和FadeOut Animation.看起来像这样..
我如何为此添加背景颜色..另外请记住,我希望这可以从ICS/Jellybean工作
我的代码到现在为止......
fade_out_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.1"
android:duration="100" />
</set>
Run Code Online (Sandbox Code Playgroud)
scale_up_animation.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="100"
android:fromXScale="0.1"
android:fromYScale="0.1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1" />
</set>
Run Code Online (Sandbox Code Playgroud)
activity_main.xml - 只是相关部分
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:id="@+id/textView4"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_centerInParent="true"
android:layout_margin="8dp"
android:background="@drawable/shape_circle"
android:gravity="center"
android:text="004"
android:textColor="@color/light_gray"
android:textSize="18sp" />
<View
android:id="@+id/outer_view"
android:layout_width="120dp"
android:layout_height="120dp"
android:layout_centerInParent="true"
android:visibility="invisible"
android:background="@drawable/shape_circle_yellow"/>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
shape_circle.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="false" android:state_pressed="false" android:state_selected="false">
<shape android:shape="oval">
<solid android:color="@color/ash" /> <!-- Fill color -->
<stroke android:width="4dp" android:color="@color/medium_gray" …Run Code Online (Sandbox Code Playgroud) 我有一项任务是ProgressBar在其上添加带有百分比值的值,以在用户想要预测某些内容时显示一个值。我没有使用,ProgressDialog因为它现在已被弃用。此处,百分比值取决于从请求开始到完成所用的时间。我正在使用Volley从服务器获取数据。
这是我要实现的目标的示例图像:
我已经这样做了
我在警报对话框中实现了一个水平进度条(我使用这种方式是因为进度对话框已被弃用)。我想像这样设置进度条。
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_result_prediction, container, false);
predictProgress = (ProgressBar) view.findViewById(R.id.progressbarPredict);
AlertDialog.Builder(view.getContext());
builder.setCancelable(false); // if you want user to wait for some process to finish,
View v = inflater.inflate(R.layout.layout_loading_dialog, null);
builder.setView(v);
final AlertDialog dialog = builder.create();
submitPredictPlant.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.show();
predictProgress.setProgress(25);
predictProgress.setProgress(50);
predictProgress.setProgress(75);
predictProgress.setProgress(100);
dialog.dismiss();
Run Code Online (Sandbox Code Playgroud)
当进度为 100 时,我想关闭对话框。但这会出现类似错误
java.lang.NullPointerException: Attempt …Run Code Online (Sandbox Code Playgroud) 我如何在Osmdroid标记内插入文本?假设我需要在地图上放置几个标记,每个标记应该在其中有数字.
我怎么能做到的?我尝试#setTitle()方法,但是把文本放在气球中.
更新:
for(int i = 0; i < orders.size(); i++) {
mOrderPoint = orders.get(i).getStart();
final Order order = orders.get(i);
Marker orderMarker = new Marker(mMap);
orderMarker.setIcon(ContextCompat.getDrawable(mContext,R.drawable.order_pin));
orderMarker.setPosition(mOrderPoint);
}
Run Code Online (Sandbox Code Playgroud)