android之仿雙擊放大字型及滑動衝突,文本顯示不全,android放大字型
xml:在scrollview中要使用Android:fillViewport="true" ,否則由於scrollview嵌套的布局使用了gravity="ceter"會出現文本顯示不全以及底部還有很大的空白
<?xml version="1.0" encoding="UTF-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" > <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView android:id="@+id/tv_big_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginBottom="15dp" android:layout_marginLeft="15dp" android:layout_marginRight="15dp" android:layout_marginTop="15dp" android:gravity="left|center" android:lineSpacingExtra="5dp" android:minHeight="500dp" android:text="大師法第三方" android:textColor="@color/gray_3" android:textStyle="bold" /> </RelativeLayout> </ScrollView> </FrameLayout>
Java:雙擊放大
package com.wangzhi.MaMaHelp; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.graphics.Point; import android.os.Bundle; import android.text.method.ScrollingMovementMethod; import android.util.TypedValue; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.widget.FrameLayout; import android.widget.TextView; /** * 放大文本 * */ public class BigTextActivity extends BaseActivity { /*** * * @description 啟動當前act * @author zhongwr * @param content * 放大文本 * @param contentSize * 放大字型 */ public static void startBigTextAct(Context context, String content, int contentSize) { if (null != context && !Tools.isEmpty(content)) { Intent intent = new Intent(context, BigTextActivity.class); intent.putExtra("content", content); intent.putExtra("contentSize", contentSize); context.startActivity(intent); } } private String content; private TextView tvBigText; private int contetnSize; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.big_text_act); initViews(); initListener(); initData(savedInstanceState); } /** * 初始化View */ @Override protected void initViews() { tvBigText = (TextView) findViewById(R.id.tv_big_text); } private void initData(Bundle savedInstanceState) { Intent intent = getIntent(); content = (String) intent.getStringExtra("content"); contetnSize = (int) intent.getIntExtra("contentSize", 16); tvBigText.setTextSize(TypedValue.COMPLEX_UNIT_SP, contetnSize); tvBigText.setMinHeight(mScreenHeight - Tools.dip2px(this, 15) - Tools.getStatusBarHeight(this)); setEmojiTextView(tvBigText, content); } private void initListener() { tvBigText.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_big_text: finish(); break; default: break; } } }
/** * * @description 擷取狀態列高度 * @return 返回狀態列高度 * @update 2016年1月25日 下午8:53:31 */ public static int getStatusBarHeight(Context context) { if (statusBarHeight <= 0) { Rect frame = new Rect(); ((Activity) context).getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); statusBarHeight = frame.top; } if (statusBarHeight <= 0) { try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object obj = c.newInstance(); Field field = c.getField("status_bar_height"); int x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } } return statusBarHeight; }
public static int dip2px(Context context, float dipValue) { return (int) (dipValue * density + 0.5f); }
雙擊
import android.content.Context; import android.view.View; import android.view.View.OnClickListener; /** * 雙擊放大文本監聽器 */ public class BigTextDoubleClickListener implements OnClickListener { private long lastClickTime; private Context mContext; /** 雙擊要放大字型的內容 */ private String content; public BigTextDoubleClickListener(Context mContext, String content) { this.content = content; this.mContext = mContext; } @Override public void onClick(View v) { // 雙擊 if (System.currentTimeMillis() - lastClickTime <= 1000) {// 雙擊“兩次點擊間隔小於一秒 // 跳轉到放大字型 BigTextActivity.startBigTextAct(mContext, content, 20); } lastClickTime = System.currentTimeMillis(); } }