Hide the collapse/expand icon if text fits the screen

Icon should be hidden if explanation text fits the screen, otherwise user
should be able to click the image to collapse/expand the text.

Bug: 20554398
Change-Id: I7fb06be6e6c195a5c1bcac504f4af2d67ef4211e
This commit is contained in:
Fyodor Kupolov
2015-05-29 11:17:32 -07:00
parent 7c3b9f28b5
commit 1c8600b0c8

View File

@@ -49,6 +49,7 @@ import android.util.Log;
import android.view.Display; import android.view.Display;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager; import android.view.WindowManager;
import android.widget.AppSecurityPermissions; import android.widget.AppSecurityPermissions;
import android.widget.Button; import android.widget.Button;
@@ -245,9 +246,30 @@ public class DeviceAdminAdd extends Activity {
mAddMsg = (TextView)findViewById(R.id.add_msg); mAddMsg = (TextView)findViewById(R.id.add_msg);
mAddMsgExpander = (ImageView) findViewById(R.id.add_msg_expander); mAddMsgExpander = (ImageView) findViewById(R.id.add_msg_expander);
mAddMsg.setOnClickListener(new View.OnClickListener() { final View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) { public void onClick(View v) {
toggleMessageEllipsis(v); toggleMessageEllipsis(mAddMsg);
}
};
mAddMsgExpander.setOnClickListener(onClickListener);
mAddMsg.setOnClickListener(onClickListener);
// Determine whether the message can be collapsed - getLineCount() gives the correct
// number of lines only after a layout pass.
mAddMsg.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
final int maxLines = getEllipsizedLines();
// hide the icon if number of visible lines does not exceed maxLines
boolean hideMsgExpander = mAddMsg.getLineCount() <= maxLines;
mAddMsgExpander.setVisibility(hideMsgExpander ? View.GONE : View.VISIBLE);
if (hideMsgExpander) {
mAddMsg.setOnClickListener(null);
((View)mAddMsgExpander.getParent()).invalidate();
}
mAddMsg.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} }
}); });